我想添加到服务器接收上传文件(最终该服务器将复制上传文件到网络上的另一个位置)的能力。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总是为客户端。