La ligne en gras ci-dessus est celle qui ne fonctionne pas et j'essaie de comprendre. Voici le code HTML et javascript correspondant à cette pièce:
<button type="button" class="btn btn-primary" id="transform">
<span class="glyphicon glyphicon-wrench"></span>
Transform Uploaded Files
</button>
<a id="test_dl" href="" download="user_download.Zip">
Download File
</a>
$('#transform').click(function (e) {
$.getJSON('/transform', {}, function (final_Zip){
var zipfile = "file://" + final_Zip.zip_filename
$('a#test_dl').attr("href", zipfile)
});
});
L'utilisateur clique sur le bouton "Transformer les fichiers téléchargés", qui met ensuite à jour le href vers l'emplacement du fichier zip résultant et peut ensuite télécharger le package résultant en cliquant sur le code HTML "Télécharger le fichier".
J'ai testé cela en Chrome jusqu'à présent et en utilisant la console du développeur, je peux voir que le href est mis à jour correctement avant de cliquer sur le bouton de téléchargement, mais il affiche toujours une boîte de dialogue "Échec - Erreur réseau".
Edit: je dois ajouter que le backend pour cela est actuellement en cours d'exécution sur Python's Flask
Apparemment, c'est un problème Chrome avec l'URL de données trop longue. Je suis toujours en train de le résoudre moi-même, mais il existe apparemment des solutions impliquant des objets Blob.
Voir ici: Télécharger Canvas en PNG dans fabric.js donnant une erreur résea
Et ici: Comment exporter les informations du tableau JavaScript vers csv (côté client)?
Basé sur Comment exporter les informations du tableau JavaScript vers csv (côté client)? voici comment j'ai implémenté une solution à ce problème:
Notez que je n'avais besoin que d'une solution pour Chrome - web, c'est donc ce que j'ai utilisé. Pour une solution complète, vous devrez vérifier les exemples dans la réponse d'origine
$.ajax({
url: "/getData",
dataType: "text",
success: function(data){
$("#download").attr({
"value": "Download",
"href": URL.createObjectURL(new Blob([data], {
type: "application/octet-stream"
})),
"download": "outputFile.csv"
});
}
});