Carga de archivos ASP.NET

Estoy intentando crear una página de servidor (C #, asp.net 2.0+) para guardar un archivo cargado desde otra página.

Específicamente, tengo una página HTML con un

y no puedo entender cómo guardar el archivo en el servidor en upload.aspx.

Encontré algunos ejemplos (uno de ellos es: http://msdn.microsoft.com/en-us/library/aa479405.aspx ) pero que requiere que el elemento esté en la misma página.

Tengo dificultades para tomar el archivo publicado en mi página upload.aspx.

Alguien tiene punteros? ¿Cómo puedo tomar un archivo publicado en aspx y guardarlo en el servidor cuando el archivo se publica desde otra página?

Muchas gracias, Brett

1.Create Uploadfile.aspx

2. Inserte Uploadfile.aspx en su página HTML usando 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">   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"; } } 

luego incrusta tu página aspx en Html de la siguiente manera:

  

ahora puede cargar su archivo desde html, usando UploadFiles.aspx.

Use un código similar a este y luego escríbalo en el disco (usando, por ejemplo, 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

No puedes hacerlo sin el

no envía un archivo le dice al servidor a dónde enviar la solicitud.

Hice un pequeño caso de prueba:

  1. Marcado uploader.aspx:

     

  2. Código detrás de 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 propiedad PostBackUrl del botón lo publica en la página Upload.aspx. Allí puede usar la propiedad PreviousPage de la clase Page para encontrar el control de la página anterior, convertirlo a FileUpload y recuperar lo que quiere de él.