Как прочитать входной поток из типа файла HTML в C # ASP.NET без использования серверного элемента управления ASP.NET - PullRequest
6 голосов
/ 17 сентября 2010

У меня есть следующая форма

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

Когда я смотрю на коллекцию файлов, она пуста.

HttpFileCollection Files = HttpContext.Current.Request.Files;

Как прочитать содержимое загруженного файла без использования ASP.NETуправление на стороне сервера?

Ответы [ 2 ]

6 голосов
/ 17 сентября 2010

Зачем вам нужен правильный 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)));
    }
}

Пример кода от Загрузка файлов в ASP.net без использованияУправление сервером FileUpload

Кстати, вам не нужно использовать кнопку на стороне сервера.Вы можете добавить приведенный выше код к загрузке страницы, где вы проверяете, является ли текущее состояние обратной передачей.

Удачи!

0 голосов
/ 17 сентября 2010

Вот мое окончательное решение. Вложение файла в электронное письмо.

//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);
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...