Несколько загрузок файлов с использованием .ashx - PullRequest
1 голос
/ 07 декабря 2011

Я смотрю на это уже несколько дней безуспешно. Я пытаюсь создать многофайловую систему загрузки для веб-сайта. Я пробовал несколько плагинов jQuery, включая SWFUpload и Uploadify. Все работает, кроме самой загрузки; загруженные файлы никогда не сохраняются в папку. Я предполагаю, что я использую .ashx, так что любые указания на то, что не так в следующем коде, приветствуются. Спасибо,

//Jquery is inherited, and I'm pretty sure this is all correct
<link href="/_uploadify/uploadify.css" type="text/css" rel="stylesheet" />
<script type="text/javascript" src="/_uploadify/swfobject.js"></script>
<script type="text/javascript" src="/_uploadify/jquery.uploadify.v2.1.4.min.js"></script>

//Again, this all works as expected.  CSS displays, SWF works, the issue I THINK deals
//with 'script' and 'folder'.  My Upload.ashx is in the root, as well as uploads folder
<script type="text/javascript">
$(document).ready(function () {
    alert("here");
    $('#file_upload').uploadify({
        'uploader': '/_uploadify/uploadify.swf',
        'script': 'Upload.ashx',
        'cancelImg': '/_uploadify/cancel.png',
        'folder': 'uploads',
        'multi': true,
        'auto': true
    });
});
</script>

<input id="file_upload" name="file_upload" type="file" />

//My handler code, I'm not sure if this works or not but I do know that if
//I try to debug nothing ever fires... I'm sure that's part of the problem
<%@ WebHandler Language="C#" Class="Upload" %>

using System;
using System.Web;
using System.IO;

public class Upload : IHttpHandler {

public void ProcessRequest(HttpContext context)
{
    HttpPostedFile file = context.Request.Files["Filedata"];

    file.SaveAs("C:\\" + file.FileName);

    context.Response.ContentType = "text/plain";
    context.Response.Write("Hello World");
}

public bool IsReusable
{
    get
    {
        return false;
    }
}
}

Это все, что у меня есть. Если я пытаюсь загрузить файл с помощью SWFUpload jQuery, он говорит, что он успешен, но ничего не сохраняет в папку. Если я пытаюсь загрузить Uploadify, то происходит ошибка HTTP Error или IO Error, и опять ничего не сохраняется. Спасибо за любую помощь.

1 Ответ

2 голосов
/ 15 декабря 2011

Я понял это через некоторое время и отладки.Проблема была на самом деле с проверкой подлинности формы и возникла на любых страницах после экрана входа в систему.Вот исправление ...

Добавьте один из приведенных ниже фрагментов в файл web.config

Если вы не беспокоитесь о какой-либо аутентификации, попробуйте

  <authorization>
    <allow users="*"/>
  </authorization>

Если вы хотите разрешить только доступ к новому обработчику, сделайте это

<location path="_handlers/Upload.ashx">
<system.web>
  <authorization>
    <allow users="*"/>
  </authorization>
</system.web>
</location>

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

...