在asp.net中访问服务器端的输入类型文件
我正在使用在asp.net中访问服务器端的输入类型文件,asp.net,html,file-upload,Asp.net,Html,File Upload,我正在使用标记将文件上载到服务器。如何在服务器端访问文件并将其存储在服务器上?(该文件是一个图像文件) 客户端代码为: <form id="form1" action="PhotoStore.aspx" enctype="multipart/form-data"> <div> <input type="file" id="file" onchange="preview(this)" /> <input type="submit"
标记将文件上载到服务器。如何在服务器端访问文件并将其存储在服务器上?(该文件是一个图像文件)
客户端代码为:
<form id="form1" action="PhotoStore.aspx" enctype="multipart/form-data">
<div>
<input type="file" id="file" onchange="preview(this)" />
<input type="submit" />
</div>
</form>
我试着上传一个jpg文件。无法查看已保存的文件。出了什么问题?查看asp.NET提供的asp:FileUpload控件 您需要添加
id
和runat=“server”
如下属性:
<input type="file" id="MyFileUpload" runat="server" />
for (var i = 0; i < Request.Files.Count; i++)
{
var postedFile = Request.Files[i];
// do something with file here
}
或者,您可以使用以下选项,该选项为您提供所有上载文件的集合:
int index = 1;
foreach (HttpPostedFile postedFile in Request.Files)
{
int contentLength = postedFile.ContentLength;
string contentType = postedFile.ContentType;
string fileName = postedFile.FileName;
postedFile.Save(@"c:\test" + index + ".tmp");
index++;
}
如果不想使用工具箱中的FileUpload控件,请为输入指定一个ID,然后使用form[ID]访问输入字段并将其强制转换为HtmlInputFile
这里的示例:如果您给输入标记一个id并添加runat=“server”属性,那么您可以轻松访问它。
首先更改输入标记:
然后将以下内容添加到页面加载方法中:
if (FileUpload.PostedFile != null)
{
FileUpload.PostedFile.SaveAs(@"some path here");
}
这将把您的文件写入您选择的文件夹。如果需要确定文件类型或原始文件名,可以访问PostedFile对象。我认为文件输入上需要名称标签:
<input type="file" name="file" />
线路错误
foreach (HttpPostedFile postedFile in Request.Files)
因此,我的最终代码如下所示:
<input type="file" id="MyFileUpload" runat="server" />
for (var i = 0; i < Request.Files.Count; i++)
{
var postedFile = Request.Files[i];
// do something with file here
}
for(var i=0;i
为什么运行runat=“server”?我不想要服务器控件。如果你不想使用服务器控件,那么你可以使用Request.Files
,这将为你提供一个集合,其中包含每个上传文件的HttpPostedFile
对象。非常感谢@LukeH…你帮我摆脱了麻烦…:)如果我的方法是静态的,我将无法使用它。?
for (var i = 0; i < Request.Files.Count; i++)
{
var postedFile = Request.Files[i];
// do something with file here
}