Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用AJAX将文件上载到ASP.NET?_C#_Xmlhttprequest - Fatal编程技术网

C# 如何使用AJAX将文件上载到ASP.NET?

C# 如何使用AJAX将文件上载到ASP.NET?,c#,xmlhttprequest,C#,Xmlhttprequest,我正在尝试使用AJAX将文件上载到ASP.NET。我有一个Javascript: var xhr = new XMLHttpRequest(); for (var i = 0; i < files.length; i++) { xhr.open('post', '/File/Upload', true); xhr.setRequestHeader("Content-Type", "multipart/form-data"); var formData = new For

我正在尝试使用AJAX将文件上载到ASP.NET。我有一个Javascript:

var xhr = new XMLHttpRequest();

for (var i = 0; i < files.length; i++) {
   xhr.open('post', '/File/Upload', true);
   xhr.setRequestHeader("Content-Type", "multipart/form-data");
   var formData = new FormData();
   formData.append("_file", files[i]);
   xhr.send(files[i]);
}

假设您具有包含文件输入字段的以下表单:

<form action="/home/index" method="post" enctype="multipart/form-data" onsubmit="return handleSubmit(this);">
    <input type="file" id="_file" name="_file" multiple="multiple" />
    <button type="submit">OK</button>
</form>

好啊
您可以尝试以下功能:

function handleSubmit(form) {
    if (!FormData) {
        alert('Sorry, your browser doesn\'t support the File API => falling back to normal form submit');
        return true;
    }

    var fd = new FormData();
    var file = document.getElementById('_file');
    for (var i = 0; i < file.files.length; i++) {
        fd.append('_file', file.files[i]);
    }

    var xhr = new XMLHttpRequest();
    xhr.open(form.method, form.action, true);
    xhr.onreadystatechange = function () {
        if (xhr.readyState == 4 && xhr.status == 200) {
            alert(xhr.responseText);
        }
    };
    xhr.send(fd);

    return false;
}
函数handleSubmit(表单){
如果(!FormData){
警报('抱歉,您的浏览器不支持文件API=>返回正常表单提交');
返回true;
}
var fd=新FormData();
var file=document.getElementById(“U文件”);
对于(var i=0;i

现在,在服务器上,您应该能够使用
请求来检索文件。Files

您也可以使用jQuery

您有两个功能
Ajax:
加载(快捷方式,调用ajax):
示例:

编辑:2012-10-04 16:31
原因:得到以下评论:

嗯,除非我不明白,否则我不想加载服务器的信息,我想获取服务器上JS代码中的信息。我已经在文件数组()中有了要发送的信息小精灵

您要做的是对服务器进行AJAX调用,就像对Web服务进行调用一样。 这里有一个例子

var value = 1;
var handlerUrl = [YOUR WEBSERVICE URL];

//Do the Ajax Call
jQuery.ajax({
  url: handlerUrl,
  data: { "params[]": [value] },
  type: 'POST',
  success: function (data)
  {
     alert("succes");
  },
  error: function (jxhr, msg, err)
  {
     alert("error");
  }
});
在数据参数中,您可以提供数据
我以数组的形式发送它,但您也可以像发送1个参数一样发送它。 在我的例子中,如何访问它

//Split the parameters and set in Array of Strings
var param = context.Request.Form[0].Split(',');
var value = param[0];
就像我说的,我以数组的形式给出它,所以我只有一个参数
然后我把它分开。但是如果你想给它单一的属性,那么你
可以得到如下结果:


你有什么例外吗?没有,没有错误,没有例外。我看到了:是的,这是在使用HTML5文件API。你说的文件API是什么意思?你是说浏览按钮?对不起,我误解了你的问题。您已经在使用文件API。我已经更新了我的答案来展示一个例子。我不知道它是否改变了什么,但我的表单没有使用HTML。我使用带有文件字段的sencha表单打开浏览窗口并获取文件。这是filefield文档,请参阅实时预览:嗯,除非我不明白,否则我不想加载服务器的信息,我想获取服务器上JS代码中的信息。我已经在
文件
数组()中有了要发送的信息。很有趣!但是我怎样才能发送一个对象呢?因为文件是对象的数组(),每个对象都包含文件的信息。如果我这样做:
data:{“params[]”:[files[I]]},
我得到:
value=[Object File]
。然后,我已经有了一个可以处理单个文件上传的上传方法(我正在进行多文件上传)。如果我可以得到一个
HttpPostedFile
或者(当然)可能是
HttpPostedFileBase
,那么这个方法目前就可以工作了。。。我从来没试过。但是做了一点谷歌搜索,这似乎是不可能的。您必须使用文件上载控件。在这里查看更多信息:通过谷歌搜索找到了一个可能的解决方案:(这是一个PHP教程)
context.Request.Form[0]
context.Request.Form[1]
context.Request.Form[2]
context.Request.Form[3]
context.Request.Form[4]