0
大家好,我正在使用angularjs java和rest來實現一個報告。根據選擇的UI字段,會調用Java Layer,並從java中調用一些數據庫調用,並將返回的輸入流以csv文件形式下載。 有一個問題發生,如果我做同樣的點擊相同的網址瀏覽器,即時通過angularjs比我能夠下載文件,但如果通過使用UI即時通訊使得請求比沒有下載選項和數據返回作爲http響應角度的流。正在下載一個Csv文件來自angularjs Jax-Rs和java
Java代碼:
enter code here
@Path("/files")
public class DownloadCsvFile {
@GET
@Path("/csv")
@Produces({MediaType.APPLICATION_OCTET_STREAM})
public Response getFile() {
StreamingOutput outp = new StreamingOutput() {
@Override
public void write(OutputStream out) throws IOException,
WebApplicationException {
String url ="http://someurl?
indent=on&q=RCE_POST:2016&sort=id%20asc
&rows=100000&start=0&wt=csv";
final InputStreamReader is = new InputStreamReader(
((HttpURLConnection) (new URL(url)).openConnection())
.getInputStream(),
Charset.forName("UTF-8"));
IOUtils.copy(is, out);
}
};
ResponseBuilder response = Response.ok(outp);
response.header("Content-Disposition", "attachment;
filename=\"testFile_file.csv\"");
return response.build();
} }
AngularJs控制器代碼:
enter code here
var app = angular.module('myApp', ['ngProgress']);
app.controller('myCtrl', function($scope,$http,ngProgressFactory) {
// on submit the fun is called
$scope.LMALLPeriodReport =function()
{
return $http.get("http://localhost:8080/IsaveIdeas/rest/files/csv?
parameters="+parameter)
//parameter contain the selected field in UI
.then(function (response) {
var result = response.data;
alert("printing data");
});
};
從瀏覽器http://localhost:8080/IsaveIdeas/rest/files/csv相同的請求? parameters = {parameter}使我能夠下載文件。