1
Ich habe die folgende Funktion, um Zeile (n) der Daten zu senden, die auf der Serverseite ('/ salarypayments/generateGirofile') verarbeitet werden und wird URL (s) zurück an die Client-Seite zum Download der Datei senden (e):Mehrere Dateien herunterladen
genGiro: function(model) {
var self = this;
var controller = this.get('controller');
var chosenPayslips = [];
controller.get('chosenPayslips').forEach(function(chosenPayslip) {
chosenPayslips.push(chosenPayslip.get('id'));
});
this.get('authObject').authorize('authorizer:application', (headerName, headerValue) => {
const requestHeaders = {};
requestHeaders[headerName] = headerValue;
Ember.$.ajax({
type: "POST",
headers: requestHeaders,
data:{
payslipsArray: chosenPayslips,
amountPaid: controller.get('amountPaid'),
service_type: controller.get('service_type'),
process_mode: controller.get('process_mode'),
valueDate: moment(controller.get('valueDate')).format('YYYYMMDD'),
countTran: 6,
user: this.get('authObject.session.content.authenticated.user.id')
},
url: this.store.adapterFor('application').get('namespace') + '/salarypayments/generateGirofile',
success: function(response){
var link = document.createElement("a");
link.style.display = 'none';
document.body.appendChild(link);
response.forEach(function(download){
link.href = download.link;
link.download = download.filename;
link.click();
});
document.body.removeChild(link);
$('#myModal').modal('hide');
location.reload();
},
error: function(xhr, status, error){
console.log('Error ' + error);
}
});
});
}
aber ich bin nur in der Lage den Download von 1 Datei zu starten, nehme an, es 2 Dateien haben. Die Array-Antwort hat das folgende Attribut:
{ link: 'http://127.0.0.1/folder/1/file1.txt', filename: 'file1.txt'}
{ link: 'http://127.0.0.1/folder/1/file2.txt', filename: 'file2.txt'}
gibt es eine andere Art und Weise als die Datei zippen? Ich würde es vorziehen, keinen zusätzlichen Schritt für den Benutzer zu erstellen. – chris
Sie können mehrere Anker für mehrere Dateien erstellen und über alle Anker iterieren und sie anklicken. Theoretisch sollte dies funktionieren –
kann ein Beispiel geben, wie man das macht? – chris