Я нашел этот скрипт загрузки файла ajax здесь http://www.phpletter.com/Demo/AjaxFileUpload-Demo/
, который должен добавить функциональность ajax в мою форму загрузки файла
<div id="dialog" title="Upload Image">
<%
Html.BeginForm("Upload", "BugTracker", FormMethod.Post,new { id="uploadForm", enctype = "multipart/form-data"});
%>
Select a file: <input type="file" name="file" id="file" />
<h6>Upload a screenshot related to the ticket</h6>
<input type="submit" class="button" value="Upload" id="upload" onclick="uploadImage();" name="submit" />
<%Html.EndForm();%>
</div>
И я настроил функциювызывается, когда отправляется моя форма загрузки следующим образом:
function uploadImage() {
var action = $("#uploadForm").attr('action');
$.ajaxFileUpload({
url: action,
secureuri: false,
fileElementId: 'file',
dataType: 'json',
success: function (data, status) {
$("#RelatedFileName").val() = data.FileName;
$("#dialog").dialog("close");
}
});
return false;
}
, но она пропускает сразу через функцию обратного вызова, и браузер спрашивает, хочу ли я загрузить файл json.Вот мое действие загрузки:
[HttpPost]
public ActionResult Upload(HttpPostedFileBase file)
{
Regex imageFilenameRegex = new Regex(@"(.*?)\.(jpg|jpeg|png|gif)$");
if (file != null)
{
if (!imageFilenameRegex.IsMatch(file.FileName))
{
return JavaScript("alert('invalid file. you must upload a jpg, jpeg, png, or gif');");
}
else
{
string filePath = Path.Combine(HttpContext.Server.MapPath("~/Uploads"), Path.GetFileName(file.FileName));
file.SaveAs(filePath);
return Json(new { FileName = "/Uploads/" + file.FileName });
}
}
else
{
return JavaScript("alert('seriously? select a file to upload before hitting the upload button.');");
}
}
Я использовал jQuery.post, и он попадет в действие контроллера, но файл будет нулевым, но по крайней мере ошибки будут появляться в их окнах предупреждений, поэтомувот почему я искал другой вариант.Теперь он попадает в действие контроллера, и файл загружается, но он не обрабатывает никакого ответа.Любая помощь приветствуется.