[英]How to read inputstream from HTML file type in C# ASP.NET without using ASP.NET server side control
I have the following form 我有以下表格
<form id="upload" method="post" EncType="Multipart/Form-Data" action="reciver.aspx">
<input type="file" id="upload" name="upload" /><br/>
<input type="submit" id="save" class="button" value="Save" />
</form>
When I look at the file collection it is empty. 当我查看文件集时,它是空的。
HttpFileCollection Files = HttpContext.Current.Request.Files;
How do I read the uploaded file content without using ASP.NET server side control? 如何在不使用ASP.NET服务器端控件的情况下读取上载的文件内容?
Why do you need to get the currect httpcontext, just use the page's one, look at this example: 为什么你需要获取当前的httpcontext,只需使用页面的一个,看看这个例子:
//aspx
<form id="form1" runat="server" enctype="multipart/form-data">
<input type="file" id="myFile" name="myFile" />
<asp:Button runat="server" ID="btnUpload" OnClick="btnUploadClick" Text="Upload" />
</form>
//c#
protected void btnUploadClick(object sender, EventArgs e)
{
HttpPostedFile file = Request.Files["myFile"];
if (file != null && file.ContentLength )
{
string fname = Path.GetFileName(file.FileName);
file.SaveAs(Server.MapPath(Path.Combine("~/App_Data/", fname)));
}
}
The example code is from Uploading Files in ASP.net without using the FileUpload server control 示例代码来自ASP.net中的Uploading Files,而不使用FileUpload服务器控件
Btw, you don't need to use a server side button control. 顺便说一句,您不需要使用服务器端按钮控件。 You can add the above code to the page load where you check if the current state is a postback. 您可以将上面的代码添加到页面加载,您可以在其中检查当前状态是否为回发。
Good luck! 祝好运!
Here is my final solution. 这是我的最终解决方案。 Attaching the file to an email. 将文件附加到电子邮件。
//Get the files submitted form object
HttpFileCollection Files = HttpContext.Current.Request.Files;
//Get the first file. There could be multiple if muti upload is supported
string fileName = Files[0].FileName;
//Some validation
if(Files.Count == 1 && Files[0].ContentLength > 1 && !string.IsNullOrEmpty(fileName))
{
//Get the input stream and file name and create the email attachment
Attachment myAttachment = new Attachment(Files[0].InputStream, fileName);
//Send email
MailMessage msg = new MailMessage(new MailAddress("emailaddress@emailaddress.com", "name"), new MailAddress("emailaddress@emailaddress.com", "name"));
msg.Subject = "Test";
msg.Body = "Test";
msg.IsBodyHtml = true;
msg.Attachments.Add(myAttachment);
SmtpClient client = new SmtpClient("smtp");
client.Send(msg);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.