2012-10-19 51 views
4

背景:有沒有辦法在上傳文件時繼續使用網站?

我正在爲我的CS部門開展本科生研究項目。該項目是生物部門的網站,其關鍵特徵是生物學生能夠上傳他們自己的.xml文件,然後使用Matlab在服務器端爲他們構建*模型。

前端位於ASP.NET,JavaScript和C#環境中。我與這個項目的小關聯是我對這些系統,工具和語言的所有知識。

問:

.xml文件,我前面提到的則需要數小時才能上傳和建設。我的教授希望用戶能夠在新模型發送到後臺時使用已完成的模型繼續使用模型,並且用戶在完成時會收到一封電子郵件。我找到了用於發送電子郵件的材料,但不能繼續瀏覽該頁面。

我聽說過有關使用AJAX加載頁面的信息嗎?

+0

爲了澄清,你說它「可能需要幾個小時來上傳和構建」。我假設上傳部分非常快,構建需要很長時間? – Hamish

+0

是的。現在它成立的方式會彈出一個小圓圈,並在它構建的整個時間內旋轉。 – Mysti

回答

-1

你需要設置一些異步處理理想。我個人喜歡使用Celery和RabbitMQ作爲我的異步和消息。

1

將網頁

<asp:FileUpload ID="FileUpload1" runat="server"/> 

上的文件上傳控件構建一個HTTP處理程序來處理文件上傳:

public class Handler : IHttpHandler { 

    public void ProcessRequest (HttpContext context) { 
     HttpPostedFile fileToUpload = context.Request.Files["Filedata"]; 
     string pathToSave = HttpContext.Current.Server.MapPath("~/Files/") 
          + fileToUpload.FileName; 
     fileToUpload.SaveAs(pathToSave); 

     //Process file 
    } 

    public bool IsReusable { 
     get { 
      return false; 
     } 
    } 
} 

看看,如果你能像uploadify到整合的上傳插件項目(需要jQuery)。

<script type = "text/javascript"> 
$(document).ready(function() 
{ 
    $("#<%=FileUpload1.ClientID %>").uploadify(
    { 
     'swf': 'Scripts/uploadify.swf', 
     'uploader': 'Handler.ashx', 
     'auto': true, 
     'buttonText': 'Select File(s)' 
    }); 
}); 
</script> 

如果你不能做到這一點,你需要了解AJAX是如何工作的

阿賈克斯通常使用XMLHttpRequest的,它不允許你編碼並傳送本地文件到服務器。
您可以使用Flash swf處理在同一頁面上的上傳,或使用具有不可見1x1 iframe的目標的表單。

我發現公佈在這個博客上關於file uploads in asp.net

0

我認爲有一個小i幀開拓,這將真正做到上傳的代碼,將讓你的當前頁面繼續工作。

因此,在您當前的頁面上,您要求提供文件位置和文件名以及全部,然後在i幀中打開一個新頁面。讓我的框架知道源文件/文件夾,目標文件/文件夾,並讓它在後臺工作。所以現在你的當前頁面可以自由地繼續工作。

希望有所幫助。

0

使用無頭Java上傳小程序。 在iFrame中加載文件傳輸小程序,讓用戶啓動文件傳輸,並且當用戶想要瀏覽網站的其餘部分時,不要重新加載包含Java Applet(將上傳文件)的iFrame。傳輸完成後,執行JAvaScript調用來關閉iframe。

下面的示例使用由FileCatalyst Java小程序,但這個想法將與任何其他Java FTP小程序或ActiveX在實際上

<script> 
    var browsePath = ""; 

    function browseAndAdd() { 
     browsePath = document.FileCatalyst.browseLive(true); 
    } 

    function upload() { 
    document.FileCatalyst.uploadLive(); 
    } 

    function clearQueue() { 
    document.FileCatalyst.clearQueue(); 
    } 
</script> 

<!--Uses onClick for demonstration only--> 
<form id="uploadform"> 
    <!--Launch a browse dialog and add the selected file to the queue--> 
<input type=button onClick="javascript:browseAndAdd();" value="Browse and Add to Queue" /> 

    <!-- Force upload of whatever is currently found in the transfer queue --> 
    <input type=button onClick="javascript:upload();" value="Upload"> 

    <!-- Clear transfer queue (can be called only if no transfers are in progress) --> 
    <input type=button onClick="javascript:clearQueue();" value="Clear Queue"> 
    </form> 

道歉缺乏壓痕,我找到計算器標記插入代碼snipets不是非常用戶友好。

相關問題