выгрузка файла Post запросом не работает если файл >2 Гб

Vasilij7856

Client
Регистрация
16.02.2018
Сообщения
26
Благодарностей
4
Баллы
3
Всем привет!
Скрипт Post запросом отправляет файл (zip) на сервер.
Всё коректно работает - если файл не большой (пару Мб, либо даже 1,2 Гб).
Но как файл оказался 2,1 Гб - то квадратик с Post-запросом даже не пытается что-либо отправить - пишет "Выполнение HTTP-запроса Результат: ok" - и выходит по "зелёной" ветке.
Предполагаю что скорее всего в самой Зенке - в настройках есть какое-то ограничение - кто-то знает в чём у меня проблема ?
 
Последнее редактирование:

Zedx

Client
Регистрация
12.06.2018
Сообщения
1 365
Благодарностей
920
Баллы
113
Максимальный размер загружаемого файла на сервер зависит от настроек этого самого сервера.
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 525
Благодарностей
3 375
Баллы
113

Vasilij7856

Client
Регистрация
16.02.2018
Сообщения
26
Благодарностей
4
Баллы
3
Максимальный размер загружаемого файла на сервер зависит от настроек этого самого сервера.
С этим всё в порядке - в браузере - загружается любой большой файл.
 

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 567
Благодарностей
1 367
Баллы
113

Vasilij7856

Client
Регистрация
16.02.2018
Сообщения
26
Благодарностей
4
Баллы
3

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 567
Благодарностей
1 367
Баллы
113
нет, таймаут стоит 1000 сек, но Зенка этот кубик проходит за пол секунды по зелёной ветке
Эм... Таймаут - это время ожидания - вы хотите что бы пост запрос за секунду отправил вам файл более 2 гб залил? Покажите пожалуйста скрин зенно кубика, которым вы отправляете, либо прикрепите образец шаблона и что приходит в ответ?
 
Последнее редактирование:

Vasilij7856

Client
Регистрация
16.02.2018
Сообщения
26
Благодарностей
4
Баллы
3
Эм... Таймаут - это время ожидания - вы хотите что бы пост запрос за секунду отправил вам файл более 2 гб залил? Покажите пожалуйста скрин зенно кубика, которым вы отправляете, либо прикрепите образец шаблона и что приходит в ответ?
1) у кубика стоит таймаут 1000 сек
2) если этот кубик аплоадит файл допустим весом 1,2 Гб - это занимает +/- 30 сек
3) если этот кубик аплоадит файл весом 2+ Гб:
- кубик сразу выполняется без задержек
- его работа занимает пол секунды
- в логах "Выполнение HTTP-запроса Результат: ok"
- кубик выходит по зелёной ветке
 

Deisler

Client
Регистрация
26.10.2019
Сообщения
486
Благодарностей
191
Баллы
43
1) у кубика стоит таймаут 1000 сек
2) если этот кубик аплоадит файл допустим весом 1,2 Гб - это занимает +/- 30 сек
3) если этот кубик аплоадит файл весом 2+ Гб:
- кубик сразу выполняется без задержек
- его работа занимает пол секунды
- в логах "Выполнение HTTP-запроса Результат: ok"
- кубик выходит по зелёной ветке
Я бы на вашем месте попробовал отправить Post запрос не через кубик, а через свой код c#. С самим кодом, к сожалению, не помогу
 

Vasilij7856

Client
Регистрация
16.02.2018
Сообщения
26
Благодарностей
4
Баллы
3

_HEDELKA_

Client
Регистрация
20.02.2022
Сообщения
648
Благодарностей
170
Баллы
43
Я бы на вашем месте попробовал отправить Post запрос не через кубик, а через свой код c#. С самим кодом, к сожалению, не помогу
Полностью поддерживаю

Сутки мучался чтобы отправить файл на сервер сайта в итоге С# код спас

C#:
string filePath = project.Variables["var"].Value; //дириктория файла
string output = "";
string boundary = "------WebKitFormBoundaryYPOgzb4LvWqu9Cpw" + DateTime.Now.Ticks.ToString("x");

string url = "https://api/"; //ссылка запроса

if(System.IO.File.Exists(filePath))
{
    FileInfo strFileInfo = new FileInfo(filePath);
    string fileName = strFileInfo.Name;
    string fileType = System.Web.MimeMapping.GetMimeMapping(filePath);
    output += boundary+"\r\n";
    output += string.Format("Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"\r\n", "audio", fileName);
    output += string.Format("Content-Type: {0}\r\n\r\n", fileType);
    output += string.Format("{0}\r\n", filePath);
}

output += string.Format("{0}\r\n", boundary + "\r\n" + "Content-Disposition: form-data; name=\"preview\"\r\n\r\nfalse\r\n");
output += boundary+"--"; //можно убрать так как в моем случае нужно было передавать доп информацию

var post = ZennoPoster.HttpPost(
    url,
    output,
    "multipart/form-data",
    string.Empty,
    string.Empty,
    ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly
);

project.Variables["post"].Value = post;
 
Последнее редактирование:

Vasilij7856

Client
Регистрация
16.02.2018
Сообщения
26
Благодарностей
4
Баллы
3
Полностью поддерживаю

Сутки мучался чтобы отправить файл на сервер сайта в итоге С# код спас

C#:
string filePath = project.Variables["var"].Value; //дириктория файла
string output = "";
string boundary = "------WebKitFormBoundaryYPOgzb4LvWqu9Cpw" + DateTime.Now.Ticks.ToString("x");

string url = "https://api/"; //ссылка запроса

if(System.IO.File.Exists(filePath))
{
    FileInfo strFileInfo = new FileInfo(filePath);
    string fileName = strFileInfo.Name;
    string fileType = System.Web.MimeMapping.GetMimeMapping(filePath);
    output += boundary+"\r\n";
    output += string.Format("Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"\r\n", "audio", fileName);
    output += string.Format("Content-Type: {0}\r\n\r\n", fileType);
    output += string.Format("{0}\r\n", filePath);
}

output += string.Format("{0}\r\n", boundary + "\r\n" + "Content-Disposition: form-data; name=\"preview\"\r\n\r\nfalse\r\n");
output += boundary+"--"; //можно убрать так как в моем случае нужно было передавать доп информацию

var post = ZennoPoster.HttpPost(
    url,
    output,
    "multipart/form-data",
    string.Empty,
    string.Empty,
    ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly
);

project.Variables["post"].Value = post;
Помучился, сделал через предложенный вами вариант - но к сожалению получил такой ответ в процессе выполнения C#:
"Выполнение действия CSharp OwnCode. Слишком длинный файл. Данная операция в настоящее время поддерживает файлы размером меньше 2 ГБ."
а так - да, файлы меньшего размера - тоже заливает - как и стандартный Post-запрос...
 

Vasilij7856

Client
Регистрация
16.02.2018
Сообщения
26
Благодарностей
4
Баллы
3
В общем проблема выгрузки большого файла решилась с помощью curl - через запуск cmd.

Вдруг кому-то понадобиться - поэтому прикрепляю миниатюту от образца скрипта + сам скрипт.
Краткое описание - скрипт:
1) загружает профиль в проект
2) берёт из профиля куки ({-Variable.cookie-})
3) запускает cmd с параметрами запуска (где и указано что и куда заливать с помощью curl)

curl file upload:
/c curl --insecure --cookie "{-Variable.cookie-}" --form "size_info=sample1" --form "type=sample2" -F "file[]=@{-Project.Directory-}\{-Variable.fileName-}.zip;type=application/x-zip-compressed" -F "filename*=utf-8''{-Variable.fileName-}.zip" https://{-Variable.hostname-}/upload
Для понимания того какие заголовки нужно было прописать в CURL - использовался Фидлер (Fiddler) - и анализировались запросы отправляемые оригинальной формой (через браузер), и тем что получалось через cmd -> curl-ом

*чтобы Фидлер перехватывал запросы отправленные через cmd - нужно в код добавить прокси - такой командой:
прокси для curl:
x http://127.0.0.2:8888
**естественно IP зависит от настройки вашей сети
тоесть запрос будет выглядеть так:
пример curl запроса с использованием прокси:
/c curl x http://127.0.0.2:8888 --insecure --cookie "{-Variable.cookie-}" --form "size_info=sample1" --form "type=sample2" -F "file[]=@{-Project.Directory-}\{-Variable.fileName-}.zip;type=application/x-zip-compressed" -F "filename*=utf-8''{-Variable.fileName-}.zip" https://{-Variable.hostname-}/upload
теперь некоторые нюансы/пояснения используемые в команде:
"--insecure" - это команда для curl - игнорировать "небезопастное соединение" - у меня curl ругался и выдавал ошибку - т.к. я обращался к домену с просроченным сертификатом/небезопастным соединением
если нужно использователь дополнительные заголовки - они вставляются в запрос - например:
-H "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
-H "Accept-Encoding: gzip, deflate, br"
--user-agent "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0"
и т.д.

поэтому итоговый запрос - может выглядеть так:
Код:
/c curl x http://127.0.0.2:8888 --insecure -H "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" -H "Accept-Encoding: gzip, deflate, br" --user-agent "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0" --cookie "{-Variable.cookie-}" --form "size_info=sample1" --form "type=sample2" -F "file[]=@{-Project.Directory-}\{-Variable.fileName-}.zip;type=application/x-zip-compressed" -F "filename*=utf-8''{-Variable.fileName-}.zip" https://{-Variable.hostname-}/upload



ps - код можно просто запускать в командной строке (cmd.exe) - тогда просто убирается из начала команда "/c"
Код:
curl --insecure --cookie "{-Variable.cookie-}" --form "size_info=sample1" --form "type=sample2" -F "file[]=@{-Project.Directory-}\{-Variable.fileName-}.zip;type=application/x-zip-compressed" -F "filename*=utf-8''{-Variable.fileName-}.zip" https://{-Variable.hostname-}/upload
 

Вложения

  • Спасибо
Реакции: Deisler

WebBot

Client
Регистрация
04.04.2015
Сообщения
1 775
Благодарностей
1 393
Баллы
113
Столкнулся с подобной проблемой. Большие файлы не заливаются с помощью ZennoPoster.HttpPost
1.95 GB еще нормально проходит, но с большими реально проблема. Метод отрабатывает за долю секунды да же не пытаясь загрузить, при этом никаких ошибок не выбивает.

Может кто победил средставами ZP ? Курл мне не подходит.
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)