【问题标题】:ASP.NET - uploading files to server - jQuery vs. .NET classesASP.NET - 将文件上传到服务器 - jQuery 与 .NET 类
【发布时间】:2011-09-07 05:03:49
【问题描述】:

我想向服务器添加接收上传文件的功能(最终此服务器会将上传的文件复制到网络上的另一个位置)。

我在网上搜索并遇到了 jQuery for ASP.NET。 我只是不明白它有什么用以及它如何更好。为什么不使用通常的 .NET C# 类和函数,例如 FileUpload.SaveAs,然后复制文件? 我在这里遗漏了什么吗?

谢谢。

【问题讨论】:

    标签: jquery .net asp.net


    【解决方案1】:

    jQuery 是一个客户端 JavaScript 库。它使处理 DOM 变得更容易。您可以将它与 asp.net 一起使用,但它不是它的一部分。与所有事情一样,您应该为工作使用正确的工具。如果你想上传一些文件,那么一定要使用 asp.net 文件上传器。如果你想要一些尖端的客户端效果,那么你应该(可能)使用 jQuery。

    【讨论】:

      【解决方案2】:

      尝试纯粹使用 JavaScript 上传文件时会遇到问题。 XMLHttpRequest 对象(或其在各种浏览器中的等价物)不会序列化文件(不确定它是如何实现的),因此您必须求助于一些“黑客”,例如提交到 <iframe /> 或使用 Flash。两者都不是那么有趣。

      【讨论】:

        【解决方案3】:

        如果安全不是问题,那么您可以在解决方案中创建一个 Upload.aspx 页面,如下所示。

        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);
                }
            }
        

        在客户端,您可以按如下方式启动上传:

        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);
            }
        }
        

        【讨论】:

          【解决方案4】:

          首先,我应该注意这一点:

          1. 标准 .NET FileUpload 控件不支持部分页面更新。所以你不能将它添加到更新面板中。
          2. AJAX 文件上传器在客户端没有太多功能。

          所以有时您可能会尝试使用一些自定义 jquery 文件上传器(可能用于验证或部分上传)。而这时候jquery可以帮到你。但从服务器端来看,它仍然是您使用 .NET 类处理的相同位数组。

          Jquery 总是用于客户端。

          【讨论】:

            猜你喜欢
            • 2015-06-27
            • 2016-06-06
            • 1970-01-01
            • 2017-10-01
            • 2011-09-06
            • 1970-01-01
            • 1970-01-01
            • 2011-01-08
            • 1970-01-01
            相关资源
            最近更新 更多