原理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 ));
}
}