Ошибка загрузки HTTP: не определено?
Возможный дубликат:
Uploadify: показать сообщение об ошибке из ответа HTTP
Я пытаюсь заставить Uploadify работать в моем приложении asp.net mvc 3. Я получаю ошибку (см. Заголовок). Это мой взгляд:
@{
ViewBag.Title = "Home Page";
}
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery-1.3.2.min.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/swfobject.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery.uploadify.v2.1.0.min.js")"></script>
<input type="file" name="fileInput1" id="fileInput1" />
<span id="result"></span><a href="javascript:$('#fileInput1').uploadifyUpload();">Upload
File</a>
<script type="text/javascript">
$(document).ready(function () {
$("#fileInput1").uploadify({
uploader: '@Url.Content("~/Scripts/uploadify.swf")',
script: '@Url.Action("Upload", "Upload")',
fileDataName: 'file',
buttonText: 'File Input 1...',
multi: false,
sizeLimit: 22222222222,
simUploadLimit: 1,
cancelImg: '@Url.Content("~/Scripts/cancel.png")',
auto: false,
onError: function (a, b, c, d) {
if (d.status == 404)
alert("Could not find upload script. Use a path relative to: " + "<?= getcwd() ?>");
else if (d.type === "HTTP") {
console.log("error " + d.type + ": " + d.status);
alert("error " + d.type + ": " + d.status);
}
else if (d.type === "File Size")
$("#result").html("file too big");
//alert(c.name + " " + d.type + " Limit: " + Math.round(d.info / (1024 * 1024)) + "MB");
else
alert("error " + d.type + ": " + d.text);
},
onComplete: function (event, queueId, fileObj, response, data) {
alert(response);
}
});
});
</script>
1 ответ
Решение
Скорее всего, ошибка, которую вы получаете, указывает на наличие проблемы с действием на стороне сервера, которое должно обрабатывать загрузку файла. Я подозреваю, что какое-то исключение выброшено.
Попробуйте со следующим контроллером:
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
[HttpPost]
public ActionResult Upload(HttpPostedFileBase file)
{
if (file != null && file.ContentLength > 0)
{
var appData = Server.MapPath("~/app_data");
var filename = Path.Combine(appData, Path.GetFileName(file.FileName));
file.SaveAs(filename);
}
return Json(true);
}
}
Также попробуйте более свежую версию jquery и uploadify. Я только что протестировал с jquery 1.5.1 и загрузил 2.1.4 с тем же кодом, который вы опубликовали, и с действием контроллера, которое я показал, и оно работало отлично.
Вот мое представление Index.cshtml:
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery-1.5.1.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/swfobject.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery.uploadify.v2.1.4.js")"></script>
<input type="file" name="fileInput1" id="fileInput1" />
<span id="result"></span>
<a href="javascript:$('#fileInput1').uploadifyUpload();">Upload File</a>
<script type="text/javascript">
$(document).ready(function () {
$("#fileInput1").uploadify({
uploader: '@Url.Content("~/Scripts/uploadify.swf")',
script: '@Url.Action("Upload", "Home")',
fileDataName: 'file',
buttonText: 'File Input 1...',
multi: false,
sizeLimit: 22222222222,
simUploadLimit: 1,
cancelImg: '@Url.Content("~/Scripts/cancel.png")',
auto: false,
onError: function() {
alert('some error occurred. Sorry');
},
onComplete: function (event, queueId, fileObj, response, data) {
alert(response);
}
});
});
</script>