Загрузка файлов через HTTP Post - Эффективность - PullRequest
0 голосов
/ 13 сентября 2018

Какой самый эффективный способ загрузки файлов на сервер через 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 Ответ

0 голосов
/ 13 сентября 2018

Если вы не можете сгруппировать свои файлы, вам нужно будет загрузить их по одному.Если вы можете сгруппировать их, то желательно создать файл, который будет содержать нужные пути к файлам, если это не очевидно, заархивировать файлы, загрузить zip-файл, распаковать его на сервер и переместить файлы в нужные им файлы.место нахождения.Вам нужно будет обратить внимание на безопасность.

WebClient осуществляет загрузку по FTP, см .: Загрузка файла на FTP с использованием C #

...