2009-02-09 94 views
1

我正在ASP.NET中進行文件上傳。我用<input type=file id=upload><input type=button id="btnupload" value="File Upload">如何在沒有回傳的情況下使用JavaScript上傳文件?

我想用JavaScript上傳文件。更新面板不起作用,我不希望它回發並刷新頁面。

謝謝但如果你在JavaScript中有fileUpload相關的代碼然後發送給我。請幫幫我。

回答

-1

如果要防止頁面被刷新,請發送一個204 No Content HTTP標頭。

0

如果您正在使用visual studio 2008(或者在05中安裝了ajax),那麼在您的輸入字段周圍包裝更新面板,這將使用javascript(ajax)異步回發。

<asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
<ContentTemplate> 
    <asp:FileUpload ID="FileUpload1" runat="server" /> 
    <asp:Button ID="Button1" runat="server" Text="Button" /> 
</ContentTemplate> 
</asp:UpdatePanel> 
+0

它是否在Inner Update pannel中工作?因爲我已經使用了Upper Updatepannel,謝謝。 – 2009-02-16 05:40:49

+0

你是指另一個更新面板中的更新面板? ..因此,我認爲它不會有所不同。 – Frost 2009-02-16 07:28:13

3

您可以使用jQuery和jQuery form plugin。我用這個組合的幾個項目,我沒有任何問題,即使是大文件(10MB)

<form action="form.asp" method="post"> 
....... 
</form> 
$('form').submit(function(){ 
$(this).ajaxSubmit(function(data){ 
    $('#updateDiv').html(data); // or append/prepend/whatever 
}) 
return false 
}) 

Ofcourse,形式的作用將返回你需要更新的內容。你可能想添加一些額外的功能來處理錯誤,但這應該工作正常

+0

感謝lonut Staicu,但是如果你給我一些我可以正確理解的例子。 – 2009-02-16 05:38:48

+0

我已經用示例更新了我的帖子 – 2009-02-16 08:58:18

0

我不確定使用ASP.NET的「正確」的方式,但通常你會想要你的表單,並且一個隱藏的iframe的形式員額:

<script type="text/javascript"> 
    function handleUploadResponse(...) { 
     // do something... 
    } 
</script> 
<form method="post" action="upload.aspx" target="hiddenframe" enctype="multipart/form-data"></form> 
<iframe id="hiddenframe" name="hiddenframe" style="display:none"></iframe> 

當您提交表單,這將張貼到任何腳本將會處理在隱藏幀上傳。完成後,隱藏幀的頁面將調用window.parent.handleUploadResponse(...);,該頁面在啓動上載的父頁面上調用handleUploadResponse()函數。對於上傳功能(http://www.malsup.com/jquery/form/) 使用(http://www.fyneworks.com/jquery/multiple-file-upload/)爲指定多個文件的能力

0

使用jQuery表格插件上傳

這是它如何工作的,這個插件可以讓你發佈的數據到一個頁面,而不令人耳目一新的多文件插件可讓您通過瀏覽指定多個文件。

<form id="uploadForm" enctype="multipart/form-data" method="post" action="FileHandler.ashx"> 
<input type="hidden" value="100000" name="MAX_FILE_SIZE"/> 
File: 
<input type="file" name="file"/> 
<input type="submit" value="Submit"/> 
</form> 

所以基本上上述小HTML提交給FileHandler.ashx,無論是在輸入框中(希望),在烏拉圭回合ASP項目中添加一個HTTP處理程序,少的代碼如下

<%@ WebHandler Language="C#" Class="FileHandler" %> 

using System; 
using System.Web; 
using System.IO; 

public class FileHandler : IHttpHandler 
{ 

public void ProcessRequest(HttpContext context) 
{ 
string strFileName = Path.GetFileName(context.Request.Files[0].FileName); 
string strExtension = Path.GetExtension(context.Request.Files[0].FileName).ToLower(); 
string strSaveLocation = context.Server.MapPath("Upload") + "" + strFileName; 
context.Request.Files[0].SaveAs(strSaveLocation); 

context.Response.ContentType = "text/plain"; 
context.Response.Write("success"); 
} 

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

所有這就是失蹤從這裏是包括在你的aspx頁上的js腳本,我認爲:)祝你好運

相關問題