Ci-dessous mon code:
ActionResult DownloadAttachment(student st)
{
var file = db.EmailAttachmentReceived.FirstOrDefault(x => x.LisaId == st.Lisaid);
byte[] fileBytes = System.IO.File.ReadAllBytes(file.Filepath);
return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, file.Filename);
}
Ceci est le script que j'utilise
$(function () {
$("#DownloadAttachment").click(function () {
$.ajax({
url: '@Url.Action("DownloadAttachment", "PostDetail")',
contentType: 'application/json; charset=utf-8',
datatype: 'json',
type: "GET",
success: function () {
alert("sucess");
}
});
});
});
Comment renvoyer le fichier à télécharger en suivant le code ci-dessus?
S'il vous plaît, essayez ceci dans le succès ajax
success: function () {
window.location = '@Url.Action("DownloadAttachment", "PostDetail")';
}
Réponse mise à jour:
public ActionResult DownloadAttachment(int studentId)
{
// Find user by passed id
// Student student = db.Students.FirstOrDefault(s => s.Id == studentId);
var file = db.EmailAttachmentReceived.FirstOrDefault(x => x.LisaId == studentId);
byte[] fileBytes = System.IO.File.ReadAllBytes(file.Filepath);
return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, file.Filename);
}
Demande Ajax:
$(function () {
$("#DownloadAttachment").click(function () {
$.ajax(
{
url: '@Url.Action("DownloadAttachment", "PostDetail")',
contentType: 'application/json; charset=utf-8',
datatype: 'json',
data: {
studentId: 123
},
type: "GET",
success: function () {
window.location = '@Url.Action("DownloadAttachment", "PostDetail", new { studentId = 123 })';
}
});
});
});
Je pense qu'il n'est pas nécessaire d'appeler Ajax, vous pouvez utiliser simplement hyperlink comme exemple ci-dessous.
Voir le code
<a href="@Url.Action("DownloadAttachment", "PostDetail", new { studentId = 123 })">Download Form</a>
Méthode du contrôleur
public ActionResult DownloadAttachment(int studentId)
{
// Find user by passed id
var file = db.EmailAttachmentReceived.FirstOrDefault(x => x.LisaId == studentId);
byte[] fileBytes = System.IO.File.ReadAllBytes(file.Filepath);
return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, file.Filename);
}
La méthode ci-dessous aide à appeler une action à partir d'une requête Ajax à partir de la fenêtre de dialogue jQuery. Elle exécute l'action et peut être fermée dans la boîte de dialogue dès que l'action renvoie le résultat réussi
Manette
[HttpGet]
public ActionResult DownloadCampaign(string filePath, string mode)
{
string contentType = string.Empty;
var sDocument = filePath;
if (!System.IO.File.Exists(sDocument))
{
return HttpNotFound();
}
if (mode == "action")
return Json(new {fileName = filePath}, JsonRequestBehavior.AllowGet);
if (sDocument.Contains(".pdf"))
{
contentType = "application/pdf";
}
else if (sDocument.Contains(".docx"))
{
contentType = "application/docx";
}
else if (sDocument.Contains(".xls"))
{
contentType = "application/xlsx";
}
return File(sDocument, contentType, sDocument);
}
JQuery - Demande Ajax
$(document)
.ready(function() {
$("#btnDownload").click(function () {
var file = $("#FilePath").val();
$.ajax({
url: '@Url.Action("DownloadCampaign", "FileList")',
data: { filePath: file, mode:'action' },
method: 'GET',
dataType: 'json',
//contentType: 'application/json; charset=utf-8',
success: function(data) {
@*window.location = '@Url.RouteUrl("DownloadCampaign", "FileList", new { filePath = data1.fileName })';*@
window.location.href = "@Url.RouteUrl(new
{ Controller = "FileList", Action = "DownloadCampaign" })/?filePath=" + data.fileName + "&mode=download";
$("#downloadFile_dialog").dialog("close");
},
error: function (req, status, errorObj) {
alert("Error");
}
});
});
});
S'il vous plaît contactez-moi si vous avez besoin de plus d'informations à ce sujet.
public FileResult DownloadGeneralDocs(string docName)
{
string fileName = docName+".pdf";
var path = _globalWebSettings.Value.DownloadGeneralDocsPath;
string filePath = "";
if (fileName!="")
{
filePath = (_env.WebRootPath + string.Format("{0}{1}",path, fileName));
}
FileInfo file1 = new FileInfo(filePath);
byte[] fileBytes = System.IO.File.ReadAllBytes(file1.FullName);
return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, fileName);
}
view.cshtml:
<script>
$(document).ready(function () {
$("#docTable tbody tr td button").click(function (e) {
var docName = $(this).closest("tr").find(".document_td_data").text();
$.ajax({
url: '@Url.Action("DownloadGeneralDocs", "Documents")',
dataType: "html",
cache:false,
data: { 'docName': docName },
success: function (data) {
window.location.href = "@Url.RouteUrl(new
{ Controller = "Documents", Action = "DownloadGeneralDocs" })/?docName=" + docName ;
},
error: function (err, response) {
console.log(err, response);
alert(err, response.responseText);
}
})
});
});