ファイルブラウザが直接ファイルを開くダウンロード(フロント)

フロントセクション

//得到拼接字符串
機能getFJInfo(名前、URL){ 
	リターン"<TR> <TDスタイル= ''> <A HREF = 'javascriptの:無効(0)' οnclick= 'getDownFile(\ "" + URL +" \」\ "" +名+ "\") '>」+名+ "</a>の</ TD> </ TR>" 
} 
//文件下载
機能getDownFile(URL、名前){ 
	VAR PARAM = { 
		"URL":URL 
	}; 
	$アヤックス({ 
		URL:のcontextPath + '/製品ラベル/ file2Stream'、
		タイプ'GET'、
		データ:Base64.encode(JSON.encode(パラメータ))、
		データ型: "テキスト"、
		成功:機能(データ) { 
			downloadFile(名前、
	VARブロブ=新たなBLOB([コンテンツ])。
	VAR EVT = document.createEvent( "のMouseEvents"); 
	evt.initMouseEventは(真、偽、窓、0、0、0、0、0、偽、偽、偽、偽、0、NULL、 "クリック"); 
	aLink.download =ファイル名; 
	aLink.href = URL.createObjectURL(BLOB)。
	aLink.dispatchEvent(EVT)
}

 バックグラウンド処理制御、参照http://blog.sina.com.cn/s/blog_87216a0001014sm7.html

/ ** 
     *返回流
     * 
     * @param requestMap请求参数
     * @param応答返回对象
     * / 
    @RequestMapping(値= "/ file2Stream"、方法= RequestMethod.GET)
    公共無効file2Stream(@Json地図<文字列、オブジェクト> requestMap 、HttpServletResponseの応答){ 
        試み{ 
            文字列のURL = String.valueOf(requestMap.get( "URL")); 
            // URL URL =新しいURL(String.valueOf(requestMap.get( "URL"))); 
            InputStream ISTREAM = getFileStream(URL); 
            OutputStreamストリーム= response.getOutputStream()。
            stream.write(StreamUtils.getBytes(ISTREAM))。
            stream.flush(); 
            stream.close();
        }キャッチ(例外e){ 
            LOG.error( "ProductSalesRecommendController.file2Stream誤差|({})"、E)。
        } 
    } 
 
    / ** 
     * HttpURLConnectionの获取网络路径的文件流
     * 
     * @param URL链接
     * @return入力ストリーム
     * @throwsのIOException 
     * / 
    プライベート入力ストリームgetFileStream(URL、URL)スローにIOException { 
        HttpURLConnectionのCONN =(HttpURLConnectionの)url.openConnection() ; 
        conn.setConnectTimeout(* 1000年5)。
        conn.setRequestMethod( "GET"); 
        入力ストリームあるinStream = conn.getInputStream()。
        あるinStreamを返します。
    } 
 
    / ** 
     *ネットワークパスのHttpClientストリームファイルを取得します
     * 
     * @paramのURLリンク文字列
     * @returnのInputStream 
     * @throws IllegalStateExceptionが
     * @throws IOExceptionが
     * / 
    プライベートgetFileStreamのInputStream(文字列URL)はIllegalStateExceptionが、IOExceptionがスロー{ 
        HttpParamsがあるHttpParams新しい新BasicHttpParams =(); 
        HttpConnectionParams .setConnectionTimeout(httpParams、5000); //設定されている接続タイムアウトは5秒です
        HttpClientをクライアント=新しい(httpParams)DefaultHttpClient ; // HTTPクライアントが要求を送信する生成オブジェクト
        のHttpResponseをhttpResponse = client.execute(新しいHTTPGET( URL)); / /リクエストを送信し、応答を待っている
        HttpEntityエンティティ= httpResponse.getEntity(); //は、内部の応答内容を取得し
        、InputStreamであるinStream = entity.getContent();
        あるinStreamを返します。
    }

  

//得到拼接字符串機能getFJInfo(名前、URL){リターン "<TR> <TDスタイル= ''> <A HREF = 'javascriptの:無効(0)' οnclick= 'getDownFile(\ "" + URL +" \」\ "" +名+ "\") '>」+名+ "</a>の</ TD> </ TR>"} //文件下载機能getDownFile(URL、名前){VAR PARAM = { "URL":URL}; $ AJAX({URL:のcontextPath + '/製品ラベル/ file2Stream'、タイプ: 'GET'、データ:Base64.encode(JSON.encode(PARAM))、データ型: "テキスト"成功:関数(データ){downloadFile(名前、データ)}})} //流处理触发下载事件関数downloadFile(ファイル名、コンテンツ){VAR ALINK =のdocument.createElement( ''); VARブロブ=新しいブロブ([コンテンツ]); VAR EVT = document.createEvent( "のMouseEvents"); evt.initMouseEvent( "クリック"、真、偽、窓、0、0、0、0、0、偽、偽、偽、偽、0、NULL); aLink.download =ファイル名; aLink.href = URL.createObjectURL(BLOB); aLink.dispatchEvent(EVT)}

おすすめ

転載: www.cnblogs.com/Andrew520/p/12382381.html