Загрузка файла ASP.NET

Я пытаюсь сделать страницу сервера (C#, asp.net 2.0 +), чтобы сохранить загруженный файл от другой страницы.

А именно, у меня есть страница HTML с a

и я не могу выяснить, как обработать сохранить файл на сервере в upload.aspx.

Я нашел несколько примеров (один являющийся: http://msdn.microsoft.com/en-us/library/aa479405.aspx), но это требует элемент, чтобы быть на той же странице.

Я испытываю трудности с захватом отправленного файла на моей upload.aspx странице.

У кого-либо есть какие-либо указатели? Как я могу захватить отправленный файл в aspx и сохранить его к серверу, когда файл отправляется от другой страницы?

Большое спасибо, Brett

6
задан Brett 2 July 2010 в 15:53
поделиться

4 ответа

1. Создайте Uploadfile.aspx

2. Вставьте Uploadfile.aspx в свою страницу Html с помощью iframe

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Uploadfile.aspx.cs" Inherits="Uploadfile" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>File Upload Control</title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
        <asp:FileUpload  runat="server" ID="fuSample" />
        <asp:Button  runat="server" ID="btnUpload" Text="Upload" 
                onclick="btnUpload_Click" />
                <asp:Label runat="server" ID="lblMessage" Text=""></asp:Label>
        </div>
        </form>
    </body>
    </html>

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class Uploadfile : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
    }
    protected void btnUpload_Click(object sender, EventArgs e)
    {
        //Files is folder Name
        fuSample.SaveAs(Server.MapPath("Files") + "//" + fuSample.FileName);
        lblMessage.Text = "File Successfully Uploaded";
    }
}

, затем вставьте свою страницу aspx в Html, как показано ниже,

<iframe height="40" width="700" src="Uploadfile.aspx">
</iframe>

теперь вы вы можете загрузить свой файл из самого HTML, используя UploadFiles.aspx.

11
ответ дан 8 December 2019 в 18:32
поделиться

Используйте код, похожий на этот, а затем запишите его на диск (например, с помощью FileStream)

HttpFileCollection MyFileCollection;
 HttpPostedFile MyFile;
 int FileLen;
 System.IO.Stream MyStream;

 MyFileCollection = Request.Files;
 MyFile = MyFileCollection[0];

 FileLen = MyFile.ContentLength;
 byte[] input = new byte[FileLen];

 // Initialize the stream.
 MyStream = MyFile.InputStream;

 // Read the file into the byte array.
 MyStream.Read(input, 0, FileLen);

http://msdn.microsoft.com/en-us/library/system.web.httppostedfile.inputstream%28VS .71% 29.aspx

1
ответ дан 8 December 2019 в 18:32
поделиться

Вы не можете сделать это без

не отправляет файл сообщает серверу, куда отправить запрос.

1
ответ дан 8 December 2019 в 18:32
поделиться

Я сделал небольшой тестовый пример:

  1. Uploader.разметка aspx:

     
    

  2. Скрытый код из Upload.aspx:

     protected void Page_Load (отправитель объекта, EventArgs e)
    {
    FileUpload fu = PreviousPage.FindControl ("fuTest") как FileUpload;
    если (фу! = ноль)
     {
    int length = fu.PostedFile.ContentLength;
     }
    }
    

Свойство PostBackUrl кнопки отправляет ее на страницу Upload.aspx. Здесь вы можете использовать свойство PreviousPage класса Page, чтобы найти элемент управления с предыдущей страницы, преобразовать его в FileUpload и получить от него то, что вы хотите.

0
ответ дан 8 December 2019 в 18:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: