この記事では、リファレンス用のSpring 4ダウンロードコンポーネントを共有しています。特定のコンテンツは次のとおりです
パッケージcom.hnust.common.controller; Import org.apache.commons.io.fileutils; Import org.springframework.http.httpheaders; Import org.springframework.http.httpstatus; Import org.springframework.http.mediatype; import.springframework; org.springframework.web.bind.annotation.restController; Import java.io.file; Import java.io.ioexception; Import java.io.unsupportedencodingexception; Import java.net.urlencoder; /*** 2016/5/27にHeweipoによって作成されました。 * <p>をダウンロードする一般的なコントローラー*/ @ @restcontrollerpublic class downloadcontroller extends basecontroller {/*** @param file object* @return file byte stream*/public Responsentity <byte []> export(file file){return export(file.getname()、file); } / ***ファイルをダウンロードするための一般的な方法** @param filenameファイル名* @paramファイルオブジェクト* @return file byte stream* / public Responestentity <byte []> export(string filename、file file){httpheaders headers = new httheaders(); headers.setContentType(mediatype.application_octet_stream); headers.setContentDispositionFormData( "Attachment"、EncodeFileName(filename)); RESPONSENTITY <byte []> rs = null; try {// httpstatus.created 201はここでは使用できません。IEエッジはそれを認識できないため、ここでは使用できませんが、Firefox Chromeは問題ありませんrs = new ResponseNtity <>(fileutils.readfiletobytearray(file)、headers、httpstatus.ok); } catch(ioException e){//新しいcommonexception(responsestatusenum.file_error、e); } Rsを返します。 }/** *ダウンロードファイルの名前。これはブラウザに表示されている名前です * * @param filenameファイル名 * @returnファイル名 * <p> * ie * mozilla/5.0(windows nt 10.0; wow64;トリデント/7.0; rv:11.0) AppleWebkit/537.36(KHTML、GeckoのようなKhtml)Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586 * <p> * Firefox * Mozilla/5.0(Windows NT 10.0; Wow64; rv:46.0)Gecko/20100101 Firefox * Mozilla/5.0(Windows NT 10.0; wow64)Applewebkit/537.36(Khtml、like gecko)chrome/47.0.2526.106 Safari/537.36 */private string encodefilename(string filename){string name = filename; try {string agent = request.getheader( "user-agent")。tolowercase(); if(null!= agent &&(agent.contains( "msie")|| agent.contains( "edge"))){// ie edge name = urlencoder.encode(filename、 "utf-8"); } else if(agent.contains( "safari")|| agent.contains( "chrome")|| agent.contains( "firefox")){// safari chrome firefox name = new String(filename.getBytes( "utf-8")、 "ISO-8859-1"); } else {// ie10 ie11 name = urlencoder.encode(filename、 "utf-8"); } //プラス記号をスペースに復元します(つまり、エッジには問題があります)name = name.replace( "+"、 "%20"); } catch(unsupportedencodingexception e){// new commonexception(responsestatusenum.failure、e); } return name; }}上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。