Я пытаюсь сделать страницу сервера (C#, asp.net 2.0 +), чтобы сохранить загруженный файл от другой страницы.
А именно, у меня есть страница HTML с a
и я не могу выяснить, как обработать сохранить файл на сервере в upload.aspx.
Я нашел несколько примеров (один являющийся: http://msdn.microsoft.com/en-us/library/aa479405.aspx), но это требует элемент, чтобы быть на той же странице.
Я испытываю трудности с захватом отправленного файла на моей upload.aspx странице.
У кого-либо есть какие-либо указатели? Как я могу захватить отправленный файл в aspx и сохранить его к серверу, когда файл отправляется от другой страницы?
Большое спасибо, Brett
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.
Используйте код, похожий на этот, а затем запишите его на диск (например, с помощью 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
Вы не можете сделать это без
не отправляет файл сообщает серверу, куда отправить запрос.
Я сделал небольшой тестовый пример:
Uploader.разметка aspx:
Скрытый код из 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 и получить от него то, что вы хотите.