2010-08-26 2 views
0

Я пытаюсь использовать 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 на одной странице, поэтому я начал с более чистой страницы, используя только эти скрипты). Но теперь я не получаю никаких ошибок, я могу выбрать изображение и все, но потом он просто останавливается на этапе, где текст говорит «Загрузка ...», но я не вижу индикатор выполнения или что-то еще, и это никогда не заканчивается.

Любые идеи, что я делаю неправильно?

+0

ли SWFUpload работы с MVC для вас? –

ответ

0

Оказалось, что проблема не в Firefox, а в IE (для изменения ...). Что-то с куки. Для всех, кого это интересует, см. Раздел комментариев в блоге Стивена Сандерсона, о котором я говорил выше!

1

использование ниже CSS для фиксации Firefox проблемы

DIV.ProgressBar { 
    width: 100px; padding: 0; border: 1px solid black; margin-right: 1em; 
    height:.75em; margin-left:1em; display:-moz-inline-stack; 
    display:inline-block; zoom:1; *display:inline; 
} 
DIV.ProgressBar DIV { 
    background-color: Green; font-size: 1pt; height:100%; float:left; 
} 
SPAN.asyncUploader OBJECT { 
    position: relative; top: 5px; left: 10px; 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^