文件未到达处理程序的方法

时间:2015-03-13 09:19:22

标签: javascript jquery file-upload c#-3.0 handler

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
$(document).ready(function () {
            $("#Button1").click(function (evt) {
                var fileUpload = $('[id$=FileUpload1]')[0].value.split(",");

                      var data = new FormData();
                     for (var i = 0; i < fileUpload.length; i++) {
                          data.append(fileUpload[i].name, fileUpload[i]);
                        }

    var options = {};
    options.url = "Handler.ashx";
    options.type = "POST";
    options.data = data;
    options.contentType = false;
    options.processData = false;
    options.success = function (result) { alert(result); };
    options.error = function (err) { alert(err.statusText); };

   $.ajax(options);

   evt.preventDefault();
  });
});

这是我的jquery,下面是我的处理程序文件代码......

直到最后我在调试时获得了价值但是在一段时间内上传多个图像的座右铭我无法在句柄中获得任何价值

处理程序代码

public void ProcessRequest (HttpContext context) {

        string filePath = "FileSave//";

        foreach (string file in context.Request.Files)
        {
            HttpPostedFile filed = context.Request.Files[file];
            filed.SaveAs(context.Server.MapPath(filePath  + filed.FileName));
            context.Response.Write("File uploaded");
        }
  }

1 个答案:

答案 0 :(得分:1)

如果您愿意,可以尝试这种方式。

$(document).ready(function () {
     $("#Button1").click(function (evt) {
          evt.preventDefault();
          var formdata = new FormData();
          var fileInput = $('#sliderFile'); //#sliderFile is the id of your file upload control
          if ($(fileInput).get(0).files.length == 0)
          { //show error
               return false;
          }
          else
          {
              $.each($(fileInput).get(0).files, function (index,value) {
                   formdata.append(value.name, value);
              });
              $.ajax({
                    url: 'Handler.ashx',
                    type: "POST",
                    dataType: 'json',
                    data: data,
                    processData: false,
                    contentType:false,
                    success: function (data) {
                            if (data.result) {
                                 //return true or any thing you want to do here
                            }
                            else {
                                 //return false and display error
                            }
                    },
                    error: function (data) {
                          //return false and display error
                    }
              });
          }
     });//button click close
 });//document.ready close

试试并告诉我

编辑:请记住,HTML5 FormData在旧版浏览器中不可用,您的代码将无声地失败。如果您需要支持旧浏览器,则可能需要通过测试浏览器的功能来执行渐进增强,如果浏览器不支持FormData,则可以回退到标准表单POST:

if(window.FormData === undefined) {
        // The browser doesn't support uploading files with AJAX
        // falling back to standard form upload
} else {
        // The browser supports uploading files with AJAX =>
        // we prevent the default form POST and use AJAX instead
        e.preventDefault();

        ...
}

有关此问题的更多信息,您可以查看我已接受的一个问题的答案。很清楚那里有什么问题。 Here is the link

编辑:只需为那些寻找答案的人添加LINK1LINK2