如何使用 AjaxFileUpload.js 将 HTML 输入文件传递给 C# ASP.Net?
How do you pass HTML input files to C# ASP.Net using AjaxFileUpload.js?
我是 Whosebug 的新手,所以如果我误用了任何指南,我深表歉意。我正在制作一个 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上传文件
Reference
检查一下让我知道..
File Upload Example
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 的回答,并建议任何开始新项目的人都考虑一下。很有见地。
我是 Whosebug 的新手,所以如果我误用了任何指南,我深表歉意。我正在制作一个 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上传文件 Reference
检查一下让我知道.. File Upload Example
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 的回答,并建议任何开始新项目的人都考虑一下。很有见地。