Я пытаюсь использовать swfUpload jquery/flash плагин для загрузки, и я следую подходу Стивена Сандерсона (http://blog.stevensanderson.com/2008/11/24/jquery-ajax-uploader-plugin-with-progress-bar/). Но я не могу заставить его работать. Он отлично работает в образце приложения, которое я загрузил с его сайта. Чтобы попытаться заставить его работать, я попытался скопировать свою страницу и все непосредственно в мое приложение, но это все еще не работает.Как получить swfupload для работы с Asp.Net MVC 2
Вот страница:
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>File upload</title>
<link rel="Stylesheet" href="../../Content/Site.css" />
<%-- <script src="../../Scripts/jquery-1.2.6.min.js"></script>--%>
<script src="../../Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
<script type="text/javascript" src="../../Scripts/swfupload.js"></script>
<script type="text/javascript" src="../../Scripts/jquery-asyncUpload-0.1.js"></script>
</head>
<body>
<div id="MainContents">
<form enctype="multipart/form-data" method="post">
<h1>Your profile</h1>
<p>(In a real app, other form controls would appear here)</p>
<p>
Upload your photo: <input type="file" id="photo" name="photo" />
</p>
<input type="submit" value="Save my profile" />
</form>
</div>
<script type="text/javascript">
$(function() {
$("#photo").makeAsyncUploader({
upload_url: "/Customers/AsyncUpload/",
flash_url: '../../Scripts/swfupload.swf',
button_image_url: '/Content/blankButton.png',
disableDuringUpload: 'INPUT[type="submit"]'
});
});
</script>
<div id="result"></div>
</body>
</html>
А вот метод действия:
public Guid AsyncUpload()
{
return _fileStore.SaveUploadedFile(Request.Files[0]);
}
Это в контроллере CustomersController, и у меня есть это в начале контроллера:
private IFileStore _fileStore = new DiskFileStore();
Как и в его образце. Конечно, у меня также есть интерфейс IFileStore и класс DiskFileStore.
У меня есть все ссылки на файлы JS и CSS в голову тег:
<head>
<title>File upload</title>
<link rel="Stylesheet" href="../../Content/Site.css" />
<script src="../../Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
<script type="text/javascript" src="../../Scripts/swfupload.js"></script>
<script type="text/javascript" src="../../Scripts/jquery-asyncUpload-0.1.js"></script>
</head>
(Хотя я использовал последнюю JQuery у меня есть, а не 1.2.6, которые он имел в своем образце) , Я знаю, по крайней мере, что сценарии запускаются, потому что в FireBug я вижу, что вход динамически изменяется на Flash-объект, как и предполагалось.
Дело в том, что AsyncUpload() никогда не называется. Я установил там точку останова, которая никогда не достигалась. И у меня разные ошибки. В первый раз, когда я попробовал, я получил ошибку 302 в окне предупреждения из сценария. (В то время у меня были другие сценарии jQuery на одной странице, поэтому я начал с более чистой страницы, используя только эти скрипты). Но теперь я не получаю никаких ошибок, я могу выбрать изображение и все, но потом он просто останавливается на этапе, где текст говорит «Загрузка ...», но я не вижу индикатор выполнения или что-то еще, и это никогда не заканчивается.
Любые идеи, что я делаю неправильно?
ли SWFUpload работы с MVC для вас? –