天天看點

WEB 中的檔案下載下傳(待修改、完善)

鍦?WEB 寮€鍙戜腑锛屾垜浠細鏈熸湜鐢ㄦ埛鍦ㄧ偣鍑繪煇涓摼鎺ョ殑鏃跺€欙紝涓嬭澆涓€涓枃浠訛紙涓嶇杩欎釜鏂囦歡鑳戒笉鑳借娴忚鍣ㄨВ鏋愶紝閮借涓嬭澆锛夈€備互鍓嶆帴瑙﹁繃涓€绉嶆柟寮忥紝灏辨槸鍦ㄥ搷搴?header 涓缃?鈥?code>鈥媐orce-download鈥?/code>鈥?锛?

Content-Type: application/force-download
Content-Disposition: attachment; filename="test.zip"      

鐒惰€岋紝杩欐槸涓€绉?hack 鏂瑰紡锛屽苟涓嶆帹鑽愪嬌鐢細

Content-Type: application/force-download means "I, the web server, am going to lie to you (the browser) about what this file is so that you will not treat it as a PDF/Word Document/MP3/whatever and prompt the user to save the mysterious file to disk instead". It is a dirty hack that breaks horribly when the client doesn't do "save to disk".

寮曡堪鑷細鈥嬧€婾tility of HTTP header 鈥淐ontent-Type: application/force-download鈥?for mobile?鈥嬧€?

鏈変綅灏忎紮浼村氨閬囧埌浜嗕笉濂忔晥鐨勬儏鍐碉細

ATTENTION:

If you use any of the lines below your download will probably NOT WORK on Android 2.1.

Content-Type: application/force-download

Content-Disposition: attachment; filename=MyFileName.ZIP

Content-Disposition: attachment; filename="MyFileName.zip"

Content-Disposition: attachment; filename="MyFileName.ZIP";

寮曡堪鑷細鈥嬧€婣ndroid and the HTTP download file headers鈥嬧€?

閭d箞锛岀┒绔熸€庝箞鍔炲憿锛熸帴涓嬫潵鎻忚堪鎴戠殑鍚屼簨鍜屾垜閬囧埌鐨勯棶棰樸€?

闂鍙戠幇

鏈€杩戞帴鎵嬩簡涓€涓柊椤圭洰锛屼粖澶╁垰濂芥湁绌虹啛鎮変竴涓嬩箣鍓嶇殑鍔熻兘銆備簬鏄墦寮€绾誇笂鍦闆潃锛岃緭鍏ユ祴璇曡處鍙鳳紝杩涘叆涓€涓垪琛ㄩ〉闈紝杩欎釜鍒楄〃椤甸潰鎻愪緵浜嗕笅杞芥暟鎹負 Excel 鏂囦歡鐨勫姛鑳斤紝鐐逛簡涓€涓嬧€?code>鈥嬩笅杞解€?/code>鈥嬧€嬮摼鎺ワ紝鐚涚劧鍙戠幇锛屼笅杞界殑鏂囦歡鍚嶅瓧鎬庝箞鏄?鈥?code>鈥媎ownload鈥?/code>鈥?锛熶負鍟ュ憿锛?

鎴戠敤鐨勬祻瑙堝櫒鏄?Chrome 51 锛岀郴缁熸槸 OS EI Capitan 10.11.5 銆?

鎴戜竴鍚屼簨 Chrome 47锛屽彲浠ュ畬鍏ㄦ甯鎬笅杞斤紒

鍏堢湅鐪嬩負鍟ユ垜鐨勬祻瑙堝櫒涓嶈鍚э紒

绗竴姝ユ帰绱?/h2>

鎵撳紑 Chrome 寮€鍙戣€呭伐鍏鳳紝鏌ョ湅 HTTP 璇鋒眰锛屽彂鐜闆搷搴斿ご閮ㄦ湁濡備笅涓ら」锛?

Content-Type: application/octet-stream;charset=GBK
Content-Disposition: attachment; filename="%D6%D0%CE%C4.xlsx      
鍣紝filename 閭i噷澶氫簡涓€涓弻寮曞彿锛屽幓鎺夊惂锛?

绗簩姝ユ帰绱?/h2>

鐒惰€岋紝寮曞彿鍘繪帀涔嬪悗锛岄棶棰樹緷鏃э紒浠€涔堟儏鍐碉紵闅鵑亾鏄?filename 闇€瑕佸紩鍙峰寘璧鋒潵锛?

濂藉惂锛屽寘璧鋒潵璇曡瘯锛?

绗笁姝ユ帰绱?/h2>

鍖呰搗鏉ュ悗闂渚濇棫锛屼粈涔堥锛?

鐏墊満涓€鍔紝鍘葷湅鐪嬪埆浜烘€庝箞鍋氱殑鍚э紒浜庢槸鎵懼埌鍒漢缃戠珯涓€涓笅杞?Excel 鐨勯〉闈紝鐐瑰嚮涓嬭澆锛屽彂鐜闆搷搴?header 閲岄潰鏄繖鏍風殑锛?

Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8
Content-Disposition: inline;filename="%D6%D0%CE%C4.xlsx";filename*=utf-8''%D6%D0%CE%C4.xlsx      

Content-Type 鎸囨槑浜嗗叿浣撶殑鏂囦歡绫誨瀷锛岀劧鍚?Content-Disposition 澶氫簡涓€涓?鈥?code>鈥媐ilename*=鈥?/code>鈥嬧€?锛岃繖鏄粈涔堜笢瑗匡紵 鈥?code>鈥媢tf-8鈥?/code>鈥?鏄粈涔堢紪鐮侊紵

缁忚繃涓€鍫嗚儭涔辨悳绱紝鐚滄祴 utf-8 灏辨槸鏂囦歡鍚嶇殑缂栫爜銆備負鍟ユ枃浠跺悕瑕佺紪鐮佸憿锛熷憙锛孒TTP header 閲岄潰杩樻湭瑙佽繃涓枃鈥︹€?

濂戒簡锛屾垜浠悗绔殑浠g爜澶ц嚧鍋氭硶鏄繖鏍風殑锛?

response.addHeader("Content-Type", "application/octet-stream");
response.addHeader("Content-Disposition", "attachment; filename=\"" + new String(fileName.getBytes("GBK"), "ISO-8859-1") + "\".xlsx");      
鐪嬭搗鏉ワ紝鍙渶瑕佺敤 鈥?code>鈥媐ilename*=鈥?/code>鈥?闄勪笂缂栫爜灏辮浜嗭紝浜庢槸鍚庣浠g爜鏀規垚锛?
response.addHeader("Content-Type", "application/octet-stream");
response.addHeader("Content-Disposition", "attachment; filename=\"" + new String(fileName.getBytes("GBK"), "ISO-8859-1") + "\".xlsx;filename*=GBK''" + new String(fileName.getBytes("GBK"), "ISO-8859-1"));      
濂戒簡锛屾垜鍐嶇偣鍑諱笅杞斤紝娌¢棶棰橈紒

绗洓姝ユ帰绱?/h2>

鐪嬭搗鏉ュソ鍍忔槸 OK 浜嗭紝浣嗘槸锛岀敤 IE 璇曚竴涓嬶紝鍙堜笉姝e父浜嗭紝鏂囦歡鍚嶅瓧涓嶅浜嗭紒

涓轟粈涔堝憿锛熷埆浜虹綉绔欏湪 IE 涓嬮兘鑳芥甯鎬笅杞界殑锛佺幇鍦ㄤ富瑕佹湁涓ゅ鍖哄埆锛?

  • 鎴戜滑鐨?Content-Type 娌℃湁鍐欏叿浣擄紱
  • 鎴戜滑浣跨敤浜?GBK 缂栫爜銆?/li>

涓€鎬濈儲锛屾劅瑙夌紪鐮佺殑瀚岀枒杈冨ぇ锛屼負鍟ュ憿锛熷洜涓哄浜庢枃浠朵笅杞斤紝娴忚鍣ㄦ牴鏈笉鐢ㄧ鏂囦歡鍐呭鏄釜鍟ワ紝鍙渶瑕佹寜鐓т簩杩涘埗娴佸啓鍏ユ湰鍦扮鐩樺氨濂戒簡锛屽苟涓旓紝姝ゅ涔熷彧鏄枃浠跺悕閿欎簡锛屼笅杞戒笅鏉ョ殑鏂囦歡鍐呭杩樻槸娌¢棶棰樼殑銆?

閭e氨鏀圭紪鐮佸惂锛屾敼鎴?UTF-8 锛?

response.addHeader("Content-Type", "application/octet-stream");
response.addHeader("Content-Disposition", "attachment; filename=\"" + new String(fileName.getBytes("UTF-8"), "ISO-8859-1") + "\".xlsx;filename*=UTF-8''" + new String(fileName.getBytes("UTF-8"), "ISO-8859-1"));      
缁忔祴璇曪紝涓€鍒囨甯革紒

鎬葷粨

鍦ㄦ枃浠朵笅杞藉姛鑳戒腑锛屼竴鑸兘浼氬€熷姪浜庤繖涓や釜 header 鏉ヨ揪鍒版晥鏋滐紝閭d箞涓や釜 header 鐨勫叿浣撲綔鐢ㄦ槸浠€涔堝憿锛?
  • Content-Type锛氬憡璇夋祻瑙堝櫒褰撳墠鐨勫搷搴斾綋鏄釜浠€涔堢被鍨嬬殑鏁版嵁銆傚綋鍏朵負 application/octet-stream 鐨勬椂鍊欙紝灏辮鏄?body 閲岄潰鏄竴鍫嗕笉鐭ラ亾鏄暐鐨勪簩杩涘埗鏁版嵁銆?/li>
  • Content-Disposition锛氱敤浜庡悜娴忚鍣ㄦ彁渚涗竴浜涘叧浜庡浣曞鐞嗗搷搴斿唴瀹圭殑棰濆鐨勪俊鎭紝鍚屾椂涔熷彲浠ラ檮甯︿竴浜涘叾瀹冩暟鎹紝姣斿鍦ㄤ繚瀛樺搷搴斾綋鍒版湰鍦扮殑鏃跺€欏簲璇ヤ嬌鐢ㄤ粈涔堟牱鐨勬枃浠跺悕銆?/li>
  • 甯哥敤鐨?disponsition-type 鏈夆€?code>鈥媔nline鈥?/code>鈥?鍜?鈥?code>鈥媋ttachment鈥?/code>鈥?锛?/li>
  • inline锛氬緩璁祻瑙堝櫒浣跨敤榛樿鐨勮涓哄鐞嗗搷搴斾綋銆?/li>
  • attachment锛氬緩璁祻瑙堝櫒灏嗗搷搴斾綋淇濆瓨鍒版湰鍦幫紝鑰屼笉鏄甯稿鐞嗗搷搴斾綋銆?/li>
  • Content-Disposition 涓彲浠ヤ紶鍏?filename 鍙傛暟锛屾湁涓ょ褰㈠紡锛?/li>
  • filename=yourfilename.suffix锛氱洿鎺ユ寚鏄庢枃浠跺悕鍜屽悗缂€銆?/li>
  • filename*=utf-8''yourfilename.suffix锛氭寚瀹氫簡鏂囦歡鍚嶇紪鐮併€傚叾涓紝缂栫爜鍚庨潰閭e鍗曞紩鍙蜂腑杩樺彲浠ュ~鍏ュ唴瀹癸紝姝ゅ涓嶈禈杩幫紝鍙弬鑰冣€嬧€嬭鑼冣€嬧€嬨€?/li>
  • 鏈変簺娴忚鍣ㄤ笉璁よ瘑鈥?code>鈥媐ilename*=utf-8''yourfilename.suffix鈥?/code>鈥?锛堜及璁″洜涓鴻繖涓滆タ姣旇緝澶嶆潅锛夛紝鎵€浠ユ渶濂藉甫涓?鈥?code>鈥媐ilename=yourfilename.suffix鈥?/code>鈥?銆?/li>

繼續閱讀