ich downloada Zip-Datei von einem REST gesendet versuche die Content-Type
durch das Hinzufügen und die Content-Disposition
wie folgt vorgehen:Rückkehr Zip-Datei von REST-Client die Datei nicht Aufspringen
Server-Seite
@Produces("application/x-zip-compressed")
public Response export(@PathParam("username") String username,
@Context UriInfo ui) {
long timeStamp = new Date().getTime();
String exportedFolder = "/home/madmin/pods/"+username+"/download/";
String Path = ui.getRequestUri().toString()
.replace(replaceMe + username, "");
Path = Path.replace("http://", "https://");
Path = Path.replace(",system/export", "");
String outputZipFile = exportedFolder+"exported_on_"+timeStamp+".zip";
String sourceFolder = null;
File file = new File(exportedFolder);
if (!file.exists()) {
if (file.mkdirs()) {
System.out.println("Directory is created!");
} else {
System.out.println("Failed to create directory for exporting!");
//return ;
}
}
constructGraphs cGraphs = new constructGraphs(Path, username);
sourceFolder = cGraphs.writeGraphFiles();
generateZipFile appZip = new generateZipFile(sourceFolder,outputZipFile);
appZip.generateFileList(new File(sourceFolder));
appZip.zipIt(outputZipFile);
//Read the outputZipFile as inputStream and return it
FileInputStream fileIs = null;
try {
fileIs = new FileInputStream(outputZipFile);
} catch (IOException e) {
throw new WebApplicationException(404);
}
String fileName= outputZipFile.substring(outputZipFile.lastIndexOf("/")+1, outputZipFile.length());
return Response.status(Status.OK).entity(fileIs).header("Content-Disposition","attachment; filename = "+fileName).build();
}
Client-side:
die Client-Seite auf der anderen Seite erwartet application/x-zip-compressed
als follows:
$http({
method: 'GET',
url: uri,
headers: {
'Accept': 'application/x-zip-compressed'
},
withCredentials: true
}).
success(function(data, status, headers) {
if (status == 200 || status == 201) {
notify('Success', 'Node exported.');
}
}).
error(function(data, status) {
if (status == 401) {
notify('Forbidden', 'Authentication required to edit the resource.');
} else if (status == 403) {
notify('Forbidden', 'You are not allowed to edit the resource.');
} else {
notify('Failed', status + " " + data);
}
});
Die Datei wird nicht angezeigt, stattdessen sehe ich den Eingabestream in der Antwort.
Ist etwas falsch, was ich hier mache? Jede Hilfe würde wirklich geschätzt werden.
dieses response.setContentType versuchen ("application/x-zip-compressed"), bevor Antwort – userRaj
@userRaj Rückführen der Reaktion überprüft es standardmäßig im Header gesetzt ist, das ist, warum ich ‚didn Ich muss es explizit tun. – mzereba