我想添加到服務器接收上傳文件(最終該服務器將複製上傳文件到網絡上的另一個位置)的能力。ASP.NET - 上傳文件到服務器 - jQuery與.NET類
我在網上搜索並且遇到了jQuery for ASP.NET。 我只是不明白它有什麼用處,它是如何更好。爲什麼不使用通常的.NET C#類和函數(如FileUpload.SaveAs)然後複製文件? 我在這裏錯過了什麼嗎?
謝謝。
我想添加到服務器接收上傳文件(最終該服務器將複製上傳文件到網絡上的另一個位置)的能力。ASP.NET - 上傳文件到服務器 - jQuery與.NET類
我在網上搜索並且遇到了jQuery for ASP.NET。 我只是不明白它有什麼用處,它是如何更好。爲什麼不使用通常的.NET C#類和函數(如FileUpload.SaveAs)然後複製文件? 我在這裏錯過了什麼嗎?
謝謝。
jQuery是一個客戶端JavaScript庫。它使處理DOM變得更容易。你可以在asp.net中使用它,但它不是它的一部分。和所有事情一樣,你應該使用正確的工具來完成這項工作。如果你想上傳一些文件,那麼一定要使用asp.net文件上傳器。如果你想要一些尖端的客戶端效果,那麼你應該(可能)使用jQuery。
如果安全性不是問題,那麼您可以在解決方案中創建一個Upload.aspx頁面,這看起來像。
public string UploadImage(string path)
{
using (var myWebClient = new WebClient())
{
var responseArray = myWebClient.UploadFile("http://<<server>>/upload.aspx", "POST", path);
return System.Text.Encoding.ASCII.GetString(responseArray);
}
}
你會碰到要上傳的文件用JavaScript純粹問題:
protected void Page_Load(object sender, EventArgs e)
{
foreach(var fileKey in Context.Request.Files.AllKeys)
{
try
{
var file = Context.Request.Files[fileKey];
string serverRelativeLocation = "~/Images/";
string saveLocation = Server.MapPath(serverRelativeLocation) + file.FileName;
file.SaveAs(saveLocation); // This could also be a UNC Path as well.
Context.Response.Write(string.Format("File {0} was uploaded Successfully.", file.FileName));
}
catch (Exception ex)
{
Context.Response.Write(ex.Message);
}
}
,並在客戶端,您可以按如下開始上傳。 XMLHttpRequest
對象(或其在各種瀏覽器中的等價物)不會序列化文件(不知道它是如何實現的),所以你必須訴諸一些「黑客」,比如提交到<iframe />
或使用Flash。兩者都不那麼有趣。
首先,我要指出這一點:
所以有時你可能會嘗試使用一些自定義的jquery文件上傳(可能是驗證或部分上傳)。在這個時候,jquery可以幫助你。但從服務器端來看,它仍然是相同的 - 你使用.NET類處理的位數組。
jquery總是爲客戶端。