Reputation: 672
I am creating a application in which I am downloading a file. For this I get response from java class in js and download this response.For this my java code is -
@ApiOperation(value = "",
notes = "")
@Path("/getProjectJSONTODRAW/{implementation}")
@GET
@Timed
public Response getProjectJSONTODRAW(@PathParam("implementation") String implementation) {
File file = new File(path+File.separator+fileName);
InputStream inputStream =null;
String mimeType =null;
if (!file.exists()) {
String errorMessage = "Sorry. The file you are looking for does not exist";
log.info(errorMessage);
}else {
mimeType = URLConnection.guessContentTypeFromName(file.getName());
if (mimeType == null) {
log.info("mimetype is not detectable, will take default for the file "+file.getName());
mimeType = "application/octet-stream";
}
try {
inputStream = new BufferedInputStream(new FileInputStream(file));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
return Response
.ok(inputStream, mimeType)
.header("Content-Disposition", "attachment; filename=\""+file.getName()+"\"")
.header("Content-Length", file.length())
.build();
}
And in JS code is -
$http.get('/api/1/explore/getProjectJSONTODRAW/implementation', {
responseType: 'arraybuffer'
})
.success(function(response) {
var a = document.createElement("a");
document.body.appendChild(a);
var fileName = "abc.pdf";
var mimeType = "application/pdf";
var blob = new Blob([response], {
type: mimeType
}),
url = window.URL.createObjectURL(blob);
a.href = url;
a.download = fileName;
var isIE = false || !!document.documentMode;
if (isIE) {
a.style.cssText = "display: none;"
window.navigator.msSaveOrOpenBlob(blob, fileName);
} else {
a.style = "display: none";
a.click();
window.URL.revokeObjectURL(url);
}
}).catch(function(error) {
console.log(error);
});
}
This give me error at
var blob = new Blob([response], {type: mimeType})
Error is - "'Uint8Array' is undefined" and my IE version is - IE11
Upvotes: 6
Views: 2425
Reputation: 672
My angular version is 1.2.26 and Uint8Array is supported in later version of angular 1.5 and add
<meta http-equiv="X-UA-Compatible" content="IE=11" />
Upvotes: 4
Reputation: 1
If Blob
does not throw an error you can use responseType: "blob"
.
Upvotes: 0