版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
竭誠為您提供優(yōu)質(zhì)文檔/雙擊可除http協(xié)議上傳文件篇一:http以post方式上傳一個文件http以post方式上傳一個文件,構(gòu)造其請求頭和消息報文本篇文章主要介紹了〃http以post方式上傳一個文件,構(gòu)造其請求頭和消息報文(轉(zhuǎn)載)〃,主要涉及到http以post方式上傳一個文件,構(gòu)造其請求頭和消息報文(轉(zhuǎn)載)方面的內(nèi)容,對于http以post方式上傳一個文件,構(gòu)造其請求頭和消息報文(轉(zhuǎn)載)感興趣的同學(xué)可以參考一下。假設(shè)接受文件的網(wǎng)頁程序位于6/logsys/home/uploadispeedlog1dodefault.html.假設(shè)我們要發(fā)送一個圖片文件,文件名為“kn.jpg”,首先客戶端鏈接6后,應(yīng)該發(fā)送如下http請求:post/logsys/home/uploadispeedlog!dodefault.htmlhttp/1.1accept:text/plain,*/*accept-language:zh-cnhost:6content-type:multipart/form-data;boundary= 7db372eb000e2user-agent:winhttpclientcontent-length:3693connection:keep-alive 7db372eb000e2content-disposition:form-data;name="file";filename="kn.jpg"content-type:image/jpeg(此處省略jpeg文件二進(jìn)制數(shù)據(jù)...) 7db372eb000e2--此內(nèi)容必須一字不差,包括最后的回車,紅色字體部分就是協(xié)議的頭。給服務(wù)器上傳數(shù)據(jù)時,并非協(xié)議頭每個字段都得說明,其中,content-type是必須的,它包括一個類似標(biāo)志性質(zhì)的名為boundary的標(biāo)志,它可以是隨便輸入的字符串。對后面的具體內(nèi)容也是必須的。它用來分辨一段內(nèi)容的開始。content-length:3693,這里的3693是要上傳文件的總長度。綠色字體部分就是需要上傳的數(shù)據(jù),可以是文本,也可以是圖片等。數(shù)據(jù)內(nèi)容前面需要有content-disposition,content-type以及content-transfer-encoding等說明字段。最后的紫色部分就是協(xié)議的結(jié)尾了。注意這一行:content-type:multipart/form-data;boundary= 7db372eb000e2根據(jù)rfc1867,multipart/form-data是必須的. 7db372eb000e2是分隔符,分隔多個文件、表單項(xiàng)。其中b372eb000e2是即時生成的一個數(shù)字,用以確保整個分隔符不會在文件或表單項(xiàng)的內(nèi)容中出現(xiàn)。Form每個部分用分隔符分割,分隔符之前必須加上〃一〃著兩個字符(即一{boundary})才能被http協(xié)議認(rèn)為是Form的分隔符,表示結(jié)束的話用在正確的分隔符后面添加〃一〃表示結(jié)束。前面的 7d是1。特有的標(biāo);fe,mozila為 71.每個分隔的數(shù)據(jù)的都可以用content-type來表示下面數(shù)據(jù)的類型,可以參考rfc1341(/rfc/rfc1341.txt)例如:contect-type:image/jpeg表示下面的數(shù)據(jù)是jpeg文件數(shù)據(jù)[轉(zhuǎn)]通過http協(xié)議上傳文件20xx-04-3023:553 191、概述在最初的http協(xié)議中,沒有上傳文件方面的功能。rfc1867(/rfc/rfc1867.txt)為http協(xié)議添加了這個功能??蛻舳说臑g覽器,如microsoftie,mozila,opera等,按照此規(guī)范將用戶指定的文件發(fā)送到服務(wù)器。服務(wù)器端的網(wǎng)頁程序,如php,asp,jsp等,可以按照此規(guī)范,解析出用戶發(fā)送來的文件。microsoftie,mozila,opera已經(jīng)支持此協(xié)議,在網(wǎng)頁中使用一個特殊的form就可以發(fā)送文件。絕大部分httpserver,包括tomcat,已經(jīng)支持此協(xié)議,可接受發(fā)送來的文件。各種網(wǎng)頁程序,如php,asp,jsp中,對于上傳文件已經(jīng)做了很好的封裝。2、上傳文件的實(shí)例:用servelet實(shí)現(xiàn)(httpserver為tomcat4.1.24).在一個html網(wǎng)頁中,寫一個如下的form:loadmultifiles:textfield:.服務(wù)端servelet的編寫現(xiàn)在第三方的httpuploadfile工具庫很多。jarkata項(xiàng)目本身就提供了fileupload包/commons/fileupload/。文件上傳、表單項(xiàng)處理、效率問題基本上都考慮到了。在struts中就使用了這個包,不過是用struts的方式另行封裝了一次。這里我們直接使用fileupload包。至于struts中的用法,請參閱struts相關(guān)文檔。這個處理文件上傳的servelet主要代碼如下:publicvoiddopost(httpservletRequestrequest,httpservletResponseresponse){diskFileuploaddiskFileupload=newdiskFileupload();//允許文件最大長度diskFileupload.setsizemax(100*1024*1024);//設(shè)置內(nèi)存緩沖大小diskFileupload.setsizethreshold(4096);//設(shè)置臨時目錄diskFileupload.setRepositorypath(〃c:/tmp〃);listfileitems=diskFileupload.parseRequest(request);iteratoriter=fileitems.iterator();for(;iter.hasnext();){Fileitemfileitem=(Fileitem)iter.next();if(fileitem.isFormField()){//當(dāng)前是一個表單項(xiàng)out.println(〃formfield:〃+fileitem.getFieldname()+〃,〃+fileitem.getstring());}else{//當(dāng)前是一個上傳的文件stringfilename=fileitem.getname();fileitem.write(newFile(〃c:/uploads/〃+filename));}}}為簡略起見,異常處理,文件重命名等細(xì)節(jié)沒有寫出。6 193、客戶端發(fā)送內(nèi)容構(gòu)造假設(shè)接受文件的網(wǎng)頁程序位于5/upload_file/uploadFile.假設(shè)我們要發(fā)送一個二進(jìn)制文件、一個文本框表單項(xiàng)、一個密碼框表單項(xiàng)。文件名為。:",其內(nèi)容如下:(其中的xxx代表二進(jìn)制數(shù)據(jù),如010203)abbxxxccc客戶端應(yīng)該向5發(fā)送如下內(nèi)容:post/upload_file/uploadFilehttp/1.1accept:text/plain,*/*accept-language:zh-cnhost:5:80content-type:multipart/form-data;boundary= 7d33a816d302b6user-agent:mozilla/4.0(compatible;)content-length:424connection:keep-alive7 197d33a816d302b6content-disposition:form-data;name="userfile1";filename-e:\scontent-type:application/octet-streamabbxxxccc 7d33a816d302b6content-disposition:form-data;name-〃text1〃foo 7d33a816d302b6content-disposition:form-data;name-〃password1〃bar 7d33a816d302b6--此內(nèi)容必須一字不差,包括最后的回車。注意:content-length:424這里的424是紅色內(nèi)容的總長度(包括最后的回車)注意這一行:content-type:multipart/form-data;boundary- 7d33a816d302b6根據(jù)rfc1867,multipart/form-data是必須的. 7d33a816d302b6是分隔符,分隔多個文件、表單項(xiàng)。其中33a816d302b6是即時生成的一個數(shù)字,用以確保整個分隔符不會在文件或表單項(xiàng)的內(nèi)容中出現(xiàn)。前面的 7d是ie特有的標(biāo)志。mozila為 71用手工發(fā)送這個例子,在上述的servlet中檢驗(yàn)通過。(上面有一個回車)用戶可以選擇多個文件,填寫表單其它項(xiàng),點(diǎn)擊“提交”按鈕后就開始上傳給5/upload_file/uploadFile這是一個servelet程序注意enctype二〃multipart/form-data〃,method=post,type二〃file”。根據(jù)rfc1867,這三個屬性是必須的。multipart/form-data是新增的編碼類型,以提高二進(jìn)制文件的傳輸效率。具體的解釋請參閱rfc1867篇二:使用http協(xié)議上傳比較大的文件檔案使用http協(xié)議上傳比較大的文件檔案,比如通過web方式在郵箱里發(fā)送包含交大附件的郵件,附件上傳的時間往往會拖很久。微軟表示這與帶寬無關(guān),而是因?yàn)橄到y(tǒng)winsock默認(rèn)的傳送緩沖區(qū)太小了(只有8kb)。只要修改一下緩沖區(qū)大小,http龜速上傳的情況就可以大大改觀。修改的方法很簡單,打開注冊表后,定位分支9 19〔hkey_cuRRent_useR\software\microsoft\windows\currentVersion\internetsettings〕然后在右側(cè)窗口里的空白處,右鍵單擊,新建一名為〃socketsendbufferlength〃的dwoRd值,然后“數(shù)值數(shù)據(jù)”輸入“4000”(十六進(jìn)制,即16kb),點(diǎn)擊確認(rèn)保存修改。最后重啟電腦即可將winsock默認(rèn)的傳送緩沖區(qū)設(shè)置為16kb。篇三:http服務(wù)器實(shí)現(xiàn)文件上傳與下載http服務(wù)器實(shí)現(xiàn)文件上傳與下載(一)一、弓1言大家都知道web編程的協(xié)議就是http協(xié)議,稱為超文本傳輸協(xié)議。在j2ee中我們可以很快的實(shí)現(xiàn)一個web工程,但在c++中就不是非常的迅速,原因無非就是底層的socket網(wǎng)絡(luò)編寫需要自己完成,上層的http協(xié)議需要我們自己完成,用戶接口需要我
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024美金結(jié)算支付合同范本6篇
- 2025年度拆除工程合同糾紛調(diào)解協(xié)議范本4篇
- 二零二五年度生物科技產(chǎn)業(yè)園廠址租賃及研發(fā)合作框架協(xié)議2篇
- 與消防隊(duì)合作協(xié)議 2篇
- 2024跨境商業(yè)交易商議與協(xié)議制作詳解版
- 2025年度老舊廠房拆遷安置房購置合同4篇
- 2025年度礦產(chǎn)資源測繪勞務(wù)分包合同(新版)4篇
- 2024年獨(dú)家品牌代理協(xié)議
- 2025年度產(chǎn)業(yè)園租賃與運(yùn)營一體化合同4篇
- 2024年03月浙江杭銀理財(cái)崗位招考筆試歷年參考題庫附帶答案詳解
- 巖土工程勘察課件0巖土工程勘察
- 《腎上腺腫瘤》課件
- 2024-2030年中國典當(dāng)行業(yè)發(fā)展前景預(yù)測及融資策略分析報告
- 《乘用車越野性能主觀評價方法》
- 幼師個人成長發(fā)展規(guī)劃
- 2024-2025學(xué)年北師大版高二上學(xué)期期末英語試題及解答參考
- 動物醫(yī)學(xué)類專業(yè)生涯發(fā)展展示
- 批發(fā)面包采購合同范本
- 乘風(fēng)化麟 蛇我其誰 2025XX集團(tuán)年終總結(jié)暨頒獎盛典
- 2024年大數(shù)據(jù)分析公司與中國政府合作協(xié)議
- 一年級數(shù)學(xué)(上)計(jì)算題專項(xiàng)練習(xí)匯編
評論
0/150
提交評論