powered by simpleCommunicator - 2.0.37     © 2025 Programmizd 02
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / nginx с модулем upload и повреждение файлов
20 сообщений из 20, страница 1 из 1
nginx с модулем upload и повреждение файлов
    #39639868
Sh2kerr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет. Есть приложение (написано на delphi), которое загружает исполняемые файлы на сервер. На сервере стоит nginx с модулем upload.

Загружаю exe-шник на сервер, все проходит нормально, а когда скачиваю и пытаюсь запустить вываливается ошибка о совместимости 32 и 64 разрядности ОС. Хотя до всех этих манипуляций exe-шник нормально запускается.

Пробовал загружать другие файлы c jpg и pdf всё нормально после скачивания они открываются, а вот png не хочет: говорит, что файл поврежден или размер слишком большой (хотя файл 43 кб) и не открывается ни в одном редакторе.

Для exe использовал mime-type application/octet-stream и application/x-msdownload.

Вот кусок кода, который заливает файл на сервер:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
procedure TfmUploadInstaller.btn1Click(Sender: TObject);
var
  multipartFormData: TIdMultiPartFormDataStream;
begin
  multipartFormData := TIdMultiPartFormDataStream.Create;
  multipartFormData.AddFile('sfile', 'D:\Anno2205Materials.jpg', 'image/jpeg');
  idhtp1.Request.ContentType:='multipart/form-data';
  idhtp1.Put('http://192.168.0.50:8080/upload/Anno2205Materials.jpg', multipartFormData);
  multipartFormData.Free;
end;



Что я делаю не так?
...
Рейтинг: 0 / 0
nginx с модулем upload и повреждение файлов
    #39640258
Мутаген
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я бы начал с проверки места повреждения: при закачивании или при скачивании.

Проще всего сравнить контрольные суммы, на windows-клиенте запускать команду certutil -hashfile "file", на сервере после загрузки sha1sum "file". Если цифры не совпадают, то файл повреждается при передаче на сервер.

И тогда надо смотреть чего это за модуль upload, в официальном nginx такого нет
...
Рейтинг: 0 / 0
nginx с модулем upload и повреждение файлов
    #39640276
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МутагенИ тогда надо смотреть чего это за модуль upload, в официальном nginx такого нет Коммерческая версия - достаточно официальна ?
...
Рейтинг: 0 / 0
nginx с модулем upload и повреждение файлов
    #39640311
Фотография Scott Tiger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sh2kerr, для начала сравните, чем отличается файл, который загружаете, от файла, который загрузился.
...
Рейтинг: 0 / 0
nginx с модулем upload и повреждение файлов
    #39641176
Sh2kerr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мутаген, спасибо за совет. Суммы не сошлись, точнее они выводятся как-будто в разных форматах. Считал sha1 и md5. Для SHA1 результат такой:
Win: 91 40 b7 d4 90 e3 15 fe 4b 27 f8 8c a7 34 e9 2e 1d 78 13 cb
linux: 40f792c5640fa4b12b6c800863fad04aa5cf244c REGP.exe

Проблема в другом. Открыл exe-шник в блокноте а там вот такая ерунда:

----------050418140748703
Content-Disposition: form-data; name="sfile"; filename="REGP.exe"
Content-Type: application/x-msdownload
Content-Transfer-Encoding: binary

MZP

C MZP начинается сам exe-файл. Получается при загрузке http-заголовок записывается в exe-файл. Стёр этот заголовок до MZP, сохранил и всё заработало. Надо придумать как это исправить на nginx-e. Всем большое спасибо за ответы!
...
Рейтинг: 0 / 0
nginx с модулем upload и повреждение файлов
    #39641179
Sh2kerr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
З.Ы. Оказывается nginx добавляет такую хрень во все файлы, просто pdf и jpg более устойчивы поэтому нормально открывались, а вот png и exe возмущаются.
...
Рейтинг: 0 / 0
nginx с модулем upload и повреждение файлов
    #39641356
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sh2kerrНадо придумать как это исправить на nginx-e.

Это не HTTP заголовок, это MIME-multipart. И исправлять это надо не на nginx-е, а в твоём
кривом дельфийском приложении, у которого Context-type не соответствует реальному содержимому.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
nginx с модулем upload и повреждение файлов
    #39641368
Sh2kerr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov, и какой же должен быть тип? Почему nginx запихивает всё это в файл?
...
Рейтинг: 0 / 0
nginx с модулем upload и повреждение файлов
    #39641387
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sh2kerrи какой же должен быть тип?

Правильный. Соответствующий ожиданиям upload модуля и RFC. Лично я бы вообще выкинул
multipart дребедень и отсылал чистый octets-stream.

Sh2kerrПочему nginx запихивает всё это в файл?

Потом что твоё приложение командует ему "запихни в файл всё, что я пришлю". А присылает
вот такую вот фигню.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
nginx с модулем upload и повреждение файлов
    #39641394
Sh2kerr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov, убирал, всё равно пишет в файл эту фигню. Пробовал отправлять html-формой тоже самое.
...
Рейтинг: 0 / 0
nginx с модулем upload и повреждение файлов
    #39641400
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так перестань программировать методом случайного тыка и начни читать документацию, включая
RFC.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
nginx с модулем upload и повреждение файлов
    #39641742
Sh2kerr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov, при чем тогда "кривой дельфийский код"? я же написал, что с html-формой тоже самое. По вежлевее нельзя?
...
Рейтинг: 0 / 0
nginx с модулем upload и повреждение файлов
    #39641934
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sh2kerrпри чем тогда "кривой дельфийский код"? я же написал, что с html-формой тоже самое.

При том, что именно показанный дельфийский код отправляет данные. Зачем в нём использован
multipart, которого upload, возможно, не понимает - вопрос из вопросов.

Html-код ты показать "забыл". Вероятнее всего, там тоже копи-паст с гугля, не
соответствующий требованиям.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
nginx с модулем upload и повреждение файлов
    #39641943
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sh2kerrПо вежлевее нельзя?

"По вежлевее" это за тебя прочитать документацию по используемому тобой продукту, напрячь
телепатер и угадать где ты облажался?

Ок, вежливо отвечаю: ты пытаешься использовать промежуточные файлы nginx, вместо того,
чтобы, как положено, передать их на backend, который их должен обработать и сложить в
правильном формате в правильное место. Да, промежуточные файлы содержат оригинальные файлы
с обёрткой транспортного протокола. Более того, там может присутствовать сжатие и
кодирование bаse64 или даже quoted-printable.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
nginx с модулем upload и повреждение файлов
    #39642112
Мутаген
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. SidorovМутагенИ тогда надо смотреть чего это за модуль upload, в официальном nginx такого нет Коммерческая версия - достаточно официальна ?
Модули из коммерческой версии в том же списке, например ngx_stream_keyval_module . А в вики лежать может что угодно
...
Рейтинг: 0 / 0
nginx с модулем upload и повреждение файлов
    #39642131
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мутаген...Поскипано нахрен ...
Вы правда думаете, что NGINX, Inc. это такая левая компашка, которая чисто по кибесквоттерски зарегала похожий, но отдельный домен?
Или, всё-таки, сумеете оценить разницу между NGINX и NGINX Plus ?
...
Рейтинг: 0 / 0
nginx с модулем upload и повреждение файлов
    #39642166
Мутаген
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot Sh2kerr]
Код: pascal
1.
  idhtp1.Put('http://192.168.0.50:8080/upload/Anno2205Materials.jpg', multipartFormData);


Замена здесь слова Put на Post скорее всего исправит ситуацию
...
Рейтинг: 0 / 0
nginx с модулем upload и повреждение файлов
    #39642168
Мутаген
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. SidorovВы правда думаете, что NGINX, Inc. это такая левая компашка, которая чисто по кибесквоттерски зарегала похожий, но отдельный домен?
Или, всё-таки, сумеете оценить разницу между NGINX и NGINX Plus ?
вы правда думаете что формулирование сомнительных утверждений в вызывающе-вопросительном тоне способствует продуктивной дискуссии?
вы можете найти упоминание функционала upload module в описании NGINX Plus?
...
Рейтинг: 0 / 0
nginx с модулем upload и повреждение файлов
    #39642180
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мутагенвы можете найти упоминание функционалаА вы можете осознать один простой факт: если коммерческая компания составила список модулей, разработанных сообществом для NGINX/NGINX Plus, то, наверное, "всякая фигня" в этом списке надолго не задержится?
...
Рейтинг: 0 / 0
nginx с модулем upload и повреждение файлов
    #39642992
Sh2kerr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В итоге проблема решилась так: нашел решение проще - использую WebDAV. Для него и компонент в delphi соответствующий есть, и пересобирать боевой сервер не придётся.

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
procedure TfmUploadInstaller.btn1Click(Sender: TObject);
var
  stream: TBytesStream;
begin
  stream := TBytesStream.Create();

  stream.LoadFromFile('D:\REGP.exe');
  idwbdv1.DAVPut('http://192.168.0.50:8080/upload/REGP.exe', stream, '');

  stream.Free;
end;



Видимо по невнимательности не написал о том, что мне надо залить файлы на nginx и потом с него раздавать. Бэкенда нет.
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / nginx с модулем upload и повреждение файлов
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]