358 檔案上傳解析

2021-07-23 20:33:35 字數 3478 閱讀 2007

檔案上傳解析

閱讀鴻洋大神部落格筆記

如果是瀏覽器上傳檔案,其實是把檔案資料轉換成2進製

然後按特定的格式傳送給伺服器

android也是乙個道理

先看看**然後再分析

public void uploadform(mapparams, string fileformname,  

file uploadfile, string newfilename, string urlstr)  

throws ioexception  

stringbuilder sb = new stringbuilder();  

/** 

* 普通的表單資料 

*/  

for (string key : params.keyset())  

/** 

* 上傳檔案的頭 

方法uploadform()

引數:1.mapparams

2.string fileformname

3.file uploadfile

4.string newfilename

5.string urlstr

private static final string boundary = "----webkitformboundaryt1hoybnyefogflbr";  

分界線----webkitformboundaryt1hoybnyefogflbr

不知道這個是不是有固定格式的

if (newfilename == null || newfilename.trim().equals(""))  

如果檔名為空的話,

那麼檔名直接命名為上傳檔案的名字

stringbuilder sb = new stringbuilder();  

建立stringbuilder

for (string key : params.keyset())  

遍歷params,然後拼接sb

+ "\"; filename=\"" + newfilename + "\"" + "\r\n");  

上傳檔案的請求頭

把sb弄成位元組陣列

byte headerinfo = sb.tostring().getbytes("utf-8");  

結尾位元組陣列

byte endinfo = ("\r\n--" + boundary + "--\r\n").getbytes("utf-8");  

system.out.println(sb.tostring());  

建立url

url url = new url(urlstr);  

開啟連線

設定請求方式為post

conn.setrequestmethod("post");  

設定請求屬性

conn.setrequestproperty("content-type",  

"multipart/form-data; boundary=" + boundary);  

conn.setrequestproperty("content-length", string  

.valueof(headerinfo.length + uploadfile.length()  

+ endinfo.length));  

設定dooutput為true

conn.setdooutput(true);  

拿到輸出流

outputstream out = conn.getoutputstream();  

建立檔案輸入流

inputstream in = new fileinputstream(uploadfile);  

寫入所有資料

out.write(headerinfo);  

byte buf = new byte[1024];  

int len;  

while ((len = in.read(buf)) != -1)  

out.write(buf, 0, len);  

out.write(endinfo);  

關流in.close();  

out.close();  

if (conn.getresponsecode() == 200)  

90 檔案上傳

1 檔案上傳 首先設定請求體 使用乙個nsmutabledata進行資料拼接 本次上傳標示字串 r ncontent disposition form data name 服務端字段 filename 上傳檔名 r ncontent type 上傳檔案mimetype r n r n要上傳的二進位制...

10 檔案上傳

引入 兩個包 上傳頁面表單如下 formaction control department list fileupload.action method post enctype multipart form data 檔案 inputtype file name image br inputtype...

26 檔案上傳

一 上傳規範 前端 html 檔案上傳必須為post提交方式 表單中檔案上傳時必須帶有enctype multipart form data 時才會包含檔案內容資料 表單中用標籤上傳檔案 二 上傳規範 後端 django 檢視函式中,用request.files取檔案框的內容 file reques...