欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
通過(guò) http 協(xié)議上傳文件
               
1、概述
在最初的 http 協(xié)議中,沒(méi)有上傳文件方面的功能。 rfc1867 (http://www.ietf.org/rfc/rfc1867.txt) 為 http 協(xié)議添加了這個(gè)功能??蛻?hù)端的瀏覽器,如 Microsoft IE, Mozila, Opera 等,按照此規范將用戶(hù)指定的文件發(fā)送到服務(wù)器。服務(wù)器端的網(wǎng)頁(yè)程序,如 php, asp, jsp 等,可以按照此規范,解析出用戶(hù)發(fā)送來(lái)的文件。
Microsoft IE, Mozila, Opera 已經(jīng)支持此協(xié)議,在網(wǎng)頁(yè)中使用一個(gè)特殊的 form 就可以發(fā)送文件。
絕大部分 http server ,包括 tomcat ,已經(jīng)支持此協(xié)議,可接受發(fā)送來(lái)的文件。
各種網(wǎng)頁(yè)程序,如 php, asp, jsp 中,對于上傳文件已經(jīng)做了很好的封裝。
2、上傳文件的實(shí)例:用 servelet 實(shí)現(http server 為 tomcat 4.1.24)
1. 在一個(gè) html 網(wǎng)頁(yè)中,寫(xiě)一個(gè)如下的form :
<form enctype="multipart/form-data" action="http://192.168.29.65/UploadFile" method=post>
    load multi files :<br>
    <input name="userfile1" type="file"><br>
    <input name="userfile2" type="file"><br>
    <input name="userfile3" type="file"><br>
    <input name="userfile4" type="file"><br>
    text field :<input type="text" name="text" value="text"><br>
    <input type="submit" value="提交"><input type=reset>
</form>
2. 服務(wù)端 servelet 的編寫(xiě)
現在第三方的 http upload file 工具庫很多。Jarkata 項目本身就提供了fileupload 包
http://jakarta.apache.org/commons/fileupload/ 。文件上傳、表單項處理、效率問(wèn)題基本上都考慮到了。在 struts 中就使用了這個(gè)包,不過(guò)是用 struts 的方式另行封裝了一次。這里我們直接使用 fileupload 包。至于struts 中的用法,請參閱 struts 相關(guān)文檔。
這個(gè)處理文件上傳的 servelet 主要代碼如下:
public void doPost( HttpServletRequest request, HttpServletResponse response ) {
    DiskFileUpload diskFileUpload = new DiskFileUpload();
    // 允許文件最大長(cháng)度
    diskFileUpload.setSizeMax( 100*1024*1024 );
    // 設置內存緩沖大小
    diskFileUpload.setSizeThreshold( 4096 );
    // 設置臨時(shí)目錄
    diskFileUpload.setRepositoryPath( "c:/tmp" );
 
    List fileItems = diskFileUpload.parseRequest( request );
    Iterator iter = fileItems.iterator();
    for( ; iter.hasNext(); ) {
        FileItem fileItem = (FileItem) iter.next();
        if( fileItem.isFormField() ) {
            // 當前是一個(gè)表單項
            out.println( "form field : " + fileItem.getFieldName() + ", " + fileItem.getString() );
        } else {
            // 當前是一個(gè)上傳的文件
            String fileName = fileItem.getName();
            fileItem.write( new File("c:/uploads/"+fileName) );
        }
    }
}
 
為簡(jiǎn)略起見(jiàn),異常處理,文件重命名等細節沒(méi)有寫(xiě)出。
3、 客戶(hù)端發(fā)送內容構造
假設接受文件的網(wǎng)頁(yè)程序位于 http://192.168.29.65/upload_file/UploadFile.
假設我們要發(fā)送一個(gè)二進(jìn)制文件、一個(gè)文本框表單項、一個(gè)密碼框表單項。文件名為 E:\s ,其內容如下:(其中的XXX代表二進(jìn)制數據,如 01 02 03)
a
bb
XXX
ccc
 
客戶(hù)端應該向 192.168.29.65 發(fā)送如下內容:
 
POST /upload_file/UploadFile HTTP/1.1
Accept: text/plain, */*
Accept-Language: zh-cn
Host: 192.168.29.65:80
Content-Type:multipart/form-data;boundary=---------------------------7d33a816d302b6
User-Agent: Mozilla/4.0 (compatible; OpenOffice.org)
Content-Length: 424
Connection: Keep-Alive
 
-----------------------------7d33a816d302b6
Content-Disposition: form-data; name="userfile1"; filename="E:\s"
Content-Type: application/octet-stream
 
a
bb
XXX
ccc
-----------------------------7d33a816d302b6
Content-Disposition: form-data; name="text1"
 
foo
-----------------------------7d33a816d302b6
Content-Disposition: form-data; name="password1"
 
bar
-----------------------------7d33a816d302b6--
 
此內容必須一字不差,包括最后的回車(chē)。
注意:Content-Length: 424 這里的424是紅色內容的總長(cháng)度(包括最后的回車(chē))
注意這一行:
Content-Type: multipart/form-data; boundary=---------------------------7d33a816d302b6
根據 rfc1867, multipart/form-data是必須的.
---------------------------7d33a816d302b6 是分隔符,分隔多個(gè)文件、表單項。其中33a816d302b6 是即時(shí)生成的一個(gè)數字,用以確保整個(gè)分隔符不會(huì )在文件或表單項的內容中出現。前面的 ---------------------------7d 是 IE 特有的標志。 Mozila 為---------------------------71
用手工發(fā)送這個(gè)例子,在上述的 servlet 中檢驗通過(guò)。
(上面有一個(gè)回車(chē))
用戶(hù)可以選擇多個(gè)文件,填寫(xiě)表單其它項,點(diǎn)擊“提交”按鈕后就開(kāi)始上傳給 http://192.168.29.65/upload_file/UploadFile 這是一個(gè) servelet 程序
注意 enctype="multipart/form-data", method=post, type="file" 。根據 rfc1867, 這三個(gè)屬性是必須的。multipart/form-data 是新增的編碼類(lèi)型,以提高二進(jìn)制文件的傳輸效率。具體的解釋請參閱 rfc1867

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
http 協(xié)議上傳文件multipart form
Java實(shí)現圖片上傳源代碼
Common file upload組件的使用
DiskFileUpload
解決asp.net core 大文件上傳問(wèn)題。
SpringBoot 多文件上傳、攜帶參數
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久