/**
* 客戶端上傳檔案流程
* @throws ioexception
* 1.(客戶端)建立鏈結
* 2.(客戶端)傳送檔案上傳請求報文(4001)
* 3.(服務端)驗證身份,傳送應答報文(4008)
* 4.(客戶端)傳送檔案數通知報文(4006)
* 5.(服務端)傳送應答報文(4008)
* 6. (客戶端)傳送檔案資訊通知報文(4003)
* 7.(服務端)傳送斷點通知報文(4005)
* 8.(客戶端)傳送資料報文(4004)
* 9.(服務端)傳送應答報文(4008)
* 10. 重複8、9,直至檔案傳輸完成
* 11.(客戶端)傳送檔案傳輸結束報文(4007)
* 12.(服務端)傳送應答報文(4008)
* 13. 轉第6步,開始下乙個檔案的傳輸,如無檔案則執行第14步
* 14.(客戶端)關閉socket連線
* 15.(客戶端)斷開撥號連線
*/public
void
filesupload()
//得到所要傳送的檔案是哪個檔案,檔名是什麼。
file file =
newfile
(getuploadfilepath()
);
file[
] f = file.
listfiles()
;//得到目標資料夾下的所有檔案
string filename = f[0]
.getname()
;//得到第乙個檔案的名字
"");
//得到此檔案的長度
long filelength =
getfilelength
(file + file.separator + filename)
;//6.(客戶端)向伺服器傳送要傳輸的檔案資訊
//拼接傳送檔案資訊通知報文(4003)
string reqmessagehead =
"0120888800014003"
+addzeroforstring
(filename,50)
+setspace(48
)+addzerofornum
(filelength,10)
; os.
write
(reqmessagehead.
getbytes()
);//7.(服務端)向客戶端傳送斷點通知報文(主要告知客戶端檔案傳輸到什麼地方中斷了)(4005)
//得到斷點通知報文(4005)
string cutmes =
getmessagebody()
;if(cutmes != null &&
pdresmessage
(cutmes)
)else
}else
//如果檔案最終長度大於1024,則需要分包迴圈傳送
}else
else
}else
raf.
close()
;//關閉資源
(file1)
;//把傳輸過的檔案放到指定的資料夾下
break
;//跳出迴圈
}else
else}}
//如分包之後最後一包資料也是1024長度,則迴圈傳送資料報文,直到迴圈的次數
//等於包的數量時,則表示是最後一包,拼接尾報文
}else
else
}else
raf.
close()
;//關閉資源
(file1)
;//把傳輸過的檔案放到指定的資料夾下
break
;//跳出迴圈
}else
else}}
}}}else}}
else
}else
}else
}catch
(ioexception e)
finally
if(is != null)
if(client != null)
}catch
(ioexception e)
}}
Spring實現客戶端上傳檔案
後台需要處理這些資料,之前沒有接觸過 但類似的fileupload的外掛程式用過,其實原理差不多,因為計算機原始資料都是01 所以只要將這些檔案儲存成二進位制就可以,資料庫 mysql 最大4g 問題1,如果實現 聯調之後共享 問題2,為什麼要轉為2進製,不直接把上傳的檔案放在伺服器上 我也請教了別...
Nodejs作為客戶端上傳檔案
needle 是乙個模擬http client的乙個包,可以將nodejs作為http客戶端傳送http請求。詳細的描述在npm的 上都有介紹。這裡主要介紹以下needle傳送multipart form data請求。needle npm位址 needle 有兩種風格的api,當needle版本大...
Silverlight從客戶端上傳檔案到伺服器
這裡介紹的是一種利用webclient手動傳送stream到伺服器頁面的上傳檔案方法。一 伺服器接收檔案 這裡使用乙個ashx頁面來接收和儲存silverlight傳來的stream,頁面 如下 using system using system.collections.generic using ...