![](/img/trans.png)
[英]Can i find the number of pages and size of a tiff file before uploading it?
[英]File uploading on different pages
我被困在上傳不同頁面的文件。在一個頁面我打開一個彈出窗口,我要求用戶瀏覽並選擇文件,關閉選項,彈出窗口關閉然后我想從主頁面上傳文件,而不是從彈出。 我怎樣才能做到這一點? 我使用以下代碼來獲取上傳的文件:
HttpFileCollection uploads = HttpContext.Current.Request.Files;
如何從主頁面訪問此值,我在彈出窗口中使用HttpFilecollection
。
如果你考慮一下,你的問題實際上並不是如何從不同的頁面上傳文件。 它是“如何在ASP.NET中將值從一個頁面傳遞到另一個頁面?”
好消息是網上有一百萬篇文章解釋了如何做到這一點:
一種。 跨頁回發
C。 Steve C. Orr關於傳遞價值觀的另一篇文章 。
您需要傳遞的值是從彈出頁面到父頁面的HttpFileCollection
。 然后,您可以遍歷集合中的每個HttpPostedFile
,並根據您的邏輯調用Save
。
在JavaScript中,window有一個名為“opener”的屬性,它指的是父窗口。
因此,您可以調用window.opener從彈出窗口訪問父窗口,並執行您想要實現的任何操作。
要使用JavaScript,您可以使用document.createElement方法。
要使用ASP.NET,請使用HtmlTableRow類,並動態地向表中添加行。
我推薦JavaScript方法。
您可以嘗試使用跨頁回發 ,這是ASP.NET 2.0中的一項新功能
這是不可能的。
上傳必須由上傳控件所在的頁面完成。 您無法將信息傳輸到另一個窗口,而是讓它進行上傳。
上傳發送到服務器后,您必須立即處理。 上傳的文件只存在於該請求的文件集中,如果在處理該請求時沒有處理文件數據,它就會消失。
因此,如果您在彈出窗口中有上傳控件,則彈出窗口必須進行上傳。 發布彈出頁面時,您必須處理上傳的文件,但您當然可以在響應中放置有關上傳文件的一些信息,彈出窗口可以在彈出窗口關閉時發送到主頁面。
問題是出於安全原因,您無法設置input type =“file”元素的值。 你不希望邪惡的網站試圖上傳你的C:\\ whateverfiletheywant.dat
所以你必須在彈出窗口中上傳到臨時上傳目錄,並通過javascript(window.opener)發送用戶上傳到主表單的文件名
我做了很多次。
如果我必須在彈出窗口中上傳某些東西,就像我所做的一樣。
List<string> filesUploaded = new List<string>();
foreach (HttpPostedFile file in HttpContext.Current.Request.Files)
{
if (file.ContentLength <= 0)
continue;
string filename = String.Format("{0}.jpg",Regex.Replace(Guid.NewGuid().ToString(), "[^A-Za-z0-9]*", String.Empty));
file.SaveAs(Path.Combine(Server.MapPath("/upload/temp/"), filename));
filesUploaded.Add(filename);
}
Response.Write(String.Format("<{0}>window.opener.FilesUploaded([{1}]);</{0}>","script", String.Join(",",filesUploaded.ToArray()).TrimEnd(new char[]{','})));
* note ... asp不喜歡你的c#代碼中的腳本標簽,所以這就是為什么script關鍵字在String.Format中
從我的經驗來看,我非常喜歡telerik上傳控件,它提供了很多東西,比如驗證,文件大小,允許的擴展等等。但是如果你想要實時進度,你最好使用銀燈或基於閃存的上傳控制,telerik提供那。
這里有一些與flash + ASP.Net實現它的鏈接
http://mattberseth.com/blog/2008/07/aspnet_file_upload_with_realti_1.html
http://algorithmist.wordpress.com/2007/10/19/flex-file-upload-with-aspnet/
希望這可以幫助。
HI,您可以使用將文件名傳遞給父窗口
opener.SomeFunction
並將文件名作為數組傳遞給函數的參數。
希望這可以幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.