代码之家  ›  专栏  ›  技术社区  ›  GMX

通过HTTP Post-Efficiency上传文件

  •  0
  • GMX  · 技术社区  · 6 年前

    通过http post将文件上传到服务器的最有效方法是什么?

    我正在使用WebClient和线程:

    public static void Uploadfile(string file_path, string SERVER_URL)
        {
            string filename = file_path;//Asign a value anyway in case of error.
            try
            {
                    filename = Path.GetFileName(file_path);
    
                    //Parameter for pass the name of the file
                    NameValueCollection parameters= new NameValueCollection();
                    parameters.Add("file", filename);
                    WebClient client = new WebClient();
                    //PUT Request
                    client.QueryString = parameters;
                    byte[] rawResponse = client.UploadFile(SERVER_URL, "POST", file_path);
                    Console.WriteLine(filename + " Uploaded!");
                    client.Dispose();
            }
            catch (Exception err)
            {
                Console.WriteLine(filename + " NOT uploaded: " + err.Message);
            }
        }
    

    我在线程中这样调用函数:

    for(xxx)
        tasks.Add(Task.Run(() => Uploadfile(file_path, SERVER_URL)));
    

    我为每个文件都打开一个实例,是不是很糟糕?WebClient是最有效的? 你有什么建议吗?

    1 回复  |  直到 6 年前
        1
  •  0
  •   Lajos Arpad    6 年前

    如果你不能将你的文件分组,那么你需要逐个上传它们。如果可以对它们进行分组,则建议创建一个文件,其中包含文件的所需路径(如果不明显),压缩文件,上载zip文件,将其解压缩到服务器上,并将文件移动到所需位置。不过,你需要注意安全。

    WebClient实现FTP上传,请参见: Upload file to FTP using C#