Ошибка ввода-вывода / HTTP в Uploadify в asp.net mvc2 - PullRequest
1 голос
/ 10 марта 2011

Я использую инструмент загрузки для загрузки своих файлов без отправки назад, и после публикации сайта я сталкиваюсь с этой проблемой "Ошибка ввода-вывода" или "Ошибка HTTP".

Это мой пример кода:

$('#UploadFile').uploadify({

    'uploader': '/Content/uploadify.swf',

    'script': '/Home/uploadify',

    'cancelImg': '/Content/cancel.png',

    'folder': '/Content/UploadedFiles',

    'auto': true

});

это мой код действия

[HttpPost]
public string uploadify()
{
    string fileDirectory = Server.MapPath(@"\Content\UploadedFiles\");
    string signuterName = _fileStore.SaveUploadedFile(Request.Files[0], fileDirectory);
    Session["SignuterfilePath"] = @"/Content/UploadedFiles/" + signuterName;
    return signuterName;
}

http://www.uploadify.com/documentation/

спасибо.

1 Ответ

1 голос
/ 10 марта 2011

У вас, похоже, есть жестко запрограммированные URL, которые могут сломаться при развертывании вашего сайта в виртуальном каталоге. Я бы порекомендовал вам всегда использовать URL-помощники при работе с URL:

$('#UploadFile').uploadify({
    'uploader': '<%= Url.Content("~/Content/uploadify.swf") %>',
    'script': '<%= Url.Action("Uploadify", "Home") %>',
    'cancelImg': '<%= Url.Content("~/Content/cancel.png") %>',
    'folder': '<%= Url.Content("~/Content/UploadedFiles") %>',
    'auto': true

});

UPDATE:

Также действия вашего контроллера обычно возвращают ActionResults, а не строки:

[HttpPost]
public ActionResult Uploadify()
{
    // Notice the argument of the MapPath method:
    string fileDirectory = Server.MapPath(@"~/Content/UploadedFiles/");

    string signuterName = _fileStore.SaveUploadedFile(Request.Files[0], fileDirectory);

    // Warning: You don't have access to the Session in requests
    // performed by Flash plugins
    //Session["SignuterfilePath"] = @"/Content/UploadedFiles/" + signuterName;

    // Return an ActionResult
    return Content(signuterName, "text/plain");
}

Вы также заметите, что я удалил вызов Session из вашего действия контроллера. Причиной этого является то, что плагин Uploadify использует Flash, а Flash не имеет доступа к файлам cookie, поэтому при выполнении запроса с ним не будет связано ни одного сеанса.

...