Caricamento file ASP.NET

Sto cercando di creare una pagina server (C #, asp.net 2.0+) per salvare un file caricato da un’altra pagina.

Nello specifico, ho una pagina HTML con a

e non riesco a capire come gestire il salvataggio del file sul server in upload.aspx.

Ho trovato alcuni esempi (uno è: http://msdn.microsoft.com/en-us/library/aa479405.aspx ) ma ciò richiede che l’elemento sia sulla stessa pagina.

Sto avendo difficoltà con l’acquisizione del file pubblicato sulla mia pagina upload.aspx.

Qualcuno ha qualche indicazione? Come posso prendere un file pubblicato in aspx e salvarlo sul server quando il file viene pubblicato da un’altra pagina?

Molte grazie, Brett

1.Creare Uploadfile.aspx

2.Modifica il file Upload.aspx nella tua pagina Html usando iframe

  <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Uploadfile.aspx.cs" Inherits="Uploadfile" %>    File Upload Control    

 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"; } } 

quindi incorporare la tua pagina aspx in Html come segue,

  

ora puoi caricare il tuo file da html stesso, usando UploadFiles.aspx.

Usa un codice simile a questo e poi scrivilo su disco (usando, ad esempio, 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

Non puoi farlo senza il

non invia un file indica al server a cui inviare la richiesta.

Ho fatto un piccolo test case:

  1. Uploader.aspx markup:

     

  2. Codebehind da Upload.aspx:

     protected void Page_Load(object sender, EventArgs e) { FileUpload fu = PreviousPage.FindControl("fuTest") as FileUpload; if (fu != null) { int length = fu.PostedFile.ContentLength; } } 

La proprietà PostBackUrl del pulsante la pubblica sulla pagina Upload.aspx. È ansible utilizzare la proprietà PreviousPage della class Page per trovare il controllo dalla pagina precedente, eseguirne il cast in FileUpload e recuperare ciò che si desidera da esso.