Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/87.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
在asp.net中访问服务器端的输入类型文件_Asp.net_Html_File Upload - Fatal编程技术网

在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
}