原理winsock模拟表单上传数据,这样一般的上传接收组件都可以接收,如我们常用的 upload.asp,java的upload.do等
特点:
支持多文件带表单参数设定同时上传。
下载地址
http://www.vdisk.cn/down/index/3832662A5292/WebUploadFile.ocx.html
使用图
上图是配置服务器接收的请求,大家应该看得懂吧。
客户端ocx使用方法,如果在vb,vc等工程调用的话,可以象上图一样在属性页设置。
1)指定上传服务器各项参数,以下参数灵活设置
WebUpload.Host = "192.168.0.x"
WebUpload.Port = "8080"
WebUpload.Path = "/abc/upload"
2)上传指定文件(一个文件)
WebUpload.UploadAllFile "c:/3.jpg"
3)上传多文件
WebUpload.AppendUploadFile "c:/1.jpg","c:/1.jpg"
WebUpload.AppendUploadFile "c:/2.jpg","c:/2.jpg"
WebUpload.AppendUploadFile "c:/3.jpg","c:/3.jpg"
WebUpload.UploadAllFile
4)上传文件时同时带参数
WebUpload.AppendFormData "name", "张三"
WebUpload.AppendFormData "name2", "李四"
注册ocx后,html调用代码
<HTML><BODY><OBJECT classid="clsid:27A3B5CD-80DA-45F3-93F9-44C7DD631DF8"></OBJECT></BODY></HTML>
附:java接收的实现片断,asp等接收类似,因为就是表单上传和接收的模式,说白了就是现在你用的上传接收方式不用变化,直接用。
不懂写的上网搜索一下就有了。
import org.apache.commons.fileupload.DiskFileUpload;
......
DiskFileUpload fu = new DiskFileUpload();
// 设置允许用户上传文件大小,单位:字节
fu.setSizeMax(fc.getFile_max_size());
// 设置最多只允许在内存中存储的数据,单位:字节
fu.setSizeThreshold(fc.getFile_max_memory());
// 设置一旦文件大小超过getSizeThreshold()的值时数据存放在硬盘的目录
fu.setRepositoryPath(FILE_TEMP_DIR);
//开始读取上传信息
List fileItems = fu.parseRequest(request);
// 依次处理每个上传的文件
Iterator iter = fileItems.iterator();
HashMap map = new HashMap();
while (iter.hasNext()) {
item = (FileItem)iter.next();
if (item.isFormField()) {
//处理表单域中其他不是文件域的信息
String fieldSubName = item.getFieldName();
map.put(fieldSubName,new String(item.getString("GBK")));
}//end if
}//end while
iter = fileItems.iterator();
while (iter.hasNext()) {
item = (FileItem)iter.next();
//忽略其他不是文件域的所有表单信息 tmp_ian = 文件分隔符
if (!item.isFormField()) {
String name = item.getName();
item.write(new File(FILE_DIR+tmp_ian+ name ));
}
}