Je suis en train d'écrire un code jQuery pour télécharger le fichier et après le téléchargement le fichier doit supprimer du serveur. Ci-dessous est mon code pour le téléchargement de fichiers et supprimer le fichier.javascript - Appel complet d'abord avant la partie de succès dans jquery ajax
if (method == "ValueAddedReportExportToExcel") {
$.ajax({
async: false,
type: "post",
cache: false,
url: '@Url.Action("ValueAddedReportExportToExcel", "report")',
data: {
fromDate: $('#txtFromDate').val(),
toDate: $('#txtToDate').val(),
reportForWhom: $("#ddlReportForWhom").val(),
customers: (ddlCustomers != null) ? ddlCustomers.join(',') : "",
salesReps: (salesReps != null) ? salesReps.join(',') : "",
users: (users != null) ? users.join(',') : "",
emailTo: emailTo,
subject: subject,
body: body,
},
success: function (data) {
fileName = data.fileName;
// call to download action.
window.location = '@Url.Action("Download", "Report")' + '?file=' + data.fileName;
console.log('Success Call');
},
complete: function() {
console.log('Complete Call');
$.ajax({
async: false,
type: "post",
url: '@Url.Action("DeleteFile", "Report")',
data: { file: filename },
success: function() {
alert(filename + ' is deleted successfuly. ');
}
});
}
});
//methodURL = '@Url.Action("ValueAddedReportExportToExcel", "report")';
}
Et au-dessous de deux fonctions sont pour télécharger et supprimer la fonction dans le contrôleur.
public virtual ActionResult Download(string file)
{
string fullPath = Path.Combine(Server.MapPath("~/CostSavingReport"), file);
byte[] fileBytes = System.IO.File.ReadAllBytes(fullPath);
//return File(fileBytes, "application/vnd.ms-excel", file);
return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, file);
}
public virtual void DeleteFile(string file)
{
try
{
var fullPath = Path.Combine(Server.MapPath("~/CostSavingReport"), file);
if (System.IO.File.Exists(fullPath))
{
System.IO.File.Delete(fullPath);
}
}
catch (Exception)
{
}
}
Maintenant, le problème est d'abord l'action DeleteFile
est appelée au lieu d'action Download
ce qu'il faut faire pour faire appel à d'abord Download
et après DeleteFile
.
Supprimer ce côté serveur. –
Et après cela, que dois-je faire? @SergeK. –
Déplacez la partie de suppression dans la fonction 'Download' si vous voulez supprimer le fichier une fois qu'il a été téléchargé. Sinon, vous comptez sur le client qui peut quitter la page une fois le téléchargement terminé et le code de suppression ne sera jamais appelé quelle que soit votre solution. –