![](/img/trans.png)
[英]Not able to Upload video files using ajaxfileupload control in asp.net c#, results into error with red block
[英]How do you pass HTML input files to C# ASP.Net using AjaxFileUpload.js?
我是stackoverflow的新手,所以如果我滥用任何准则,我深表歉意。 我正在制作一个ASP.Net网站,正在遇到一个非常具体的问题,在此我使用ProcessRequest
尝试检索多个文件。
C#ASP.Net代码
变量files
没有检索请求的文件context.Request.Files
public void ProcessRequest(HttpContext context)
{
try
{
var files = context.Request.Files;
for (int i = 0; i < files.Count; i++)
{
//Checking to see if the files exist
var postedFile = files[i];
}
}
catch (Exception e)
{
context.Response.Write(e.Message);
}
}
我试图避免刷新网页和submit
类型,以允许用户流畅地浏览内容。 我相信我的问题源于从C#后端动态添加输入文件html元素。
的HTML
<div id='fmAddFiles'>
<input id='fileUploader' type='file' multiple='true' runat='server'/>
<input id='addFilesBtn' type='button' value='Add Files'/>
</div>
<div id='fmSubmit'><input id='uploadBtn' type='button' value='Upload'/></div>
我为addFilesBtn
和fileUploader
绑定了单击和触发事件,它们被正确击中。 当我尝试使用$.ajaxFileUpload
将文件传递到后端时,什么也没发生。
$.ajaxFileUpload({
url: 'WebHandler.ashx',
async: false,
secureuri: false,
fileElementId: 'fileUploader',
dataType: 'json',
success: function (data, status) {
alert(data);
},
error: function (data, status, e) {
alert(e);
}
});
提到的所有功能都被击中,只是我一生中无法弄清楚为什么它不检索任何文件。
我哪里可能出问题了?
编辑
我尝试将静态元素添加到html中,发现动态添加元素时服务器控件不起作用。 完成后, runat='server'
标记将不再起作用。
现在我处于十字路口。 有没有一种方法可以将服务器控件绑定到某个元素,或者我将不得不使用大量CSS技巧? 在最好的时候,这对我来说是相当混乱的。
我在这里附上了源代码。
js uploadFile 参考
只是检查一下就让我知道。 文件上传示例
Handler.ashx
<appSettings>
<add key="FolderPath" value="/Resources/UploadFiles/" />
</appSettings>
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
context.Response.Expires = -1;
try
{
HttpPostedFile postedFile = context.Request.Files[0];
string savepath = "";
string tempPath = "";
tempPath = System.Configuration.ConfigurationManager.AppSettings["FolderPath"];
savepath = context.Server.MapPath(tempPath);
string filename = postedFile.FileName;
if (!Directory.Exists(savepath))
{
Directory.CreateDirectory(savepath);
}
postedFile.SaveAs(savepath + @"\" + filename);
context.Response.Write(tempPath + "/" + filename);
context.Response.StatusCode = 200;
}
catch (Exception ex)
{
context.Response.Write("Error: " + ex.Message);
}
}
在意识到自己已经隐藏了fileUploader
之前,我有一个灯泡的瞬间。 我所做的只是将其设置为静态,并确保选择器使用服务器控件ID,以便uploadBtn
能够触发它。
还彻底了解了Prasad Raja的答案,并建议任何开始新项目的人员考虑一下。 很有见地。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.