В настоящее время я сталкиваюсь с проблемой при загрузке некоторых файлов с FTP-сервера: они становятся поврежденными. Введение в проблему можно увидеть в этом вопросе SO (когда я думал, что проблема была с моим программным обеспечением на основе Qt, а теперь я убежден, что это на сервере).
Ситуация такова: я хочу скопировать 8 файлов на FTP-сервер и загрузить их позже, используя программное обеспечение на основе Qt с QNetworkAccessManager. В моих попытках сделать это, я обнаружил, что всегда 3 из 8 файлов повреждаются (используя обе проверки хеша и размер файла) одинаковым образом (одинаковый размер файла с ошибкой). Проблема не в моем программном обеспечении: загрузка файлов с именами Mozilla и Chrome приводит к точно таким же ошибкам. Весь процесс выглядит следующим образом:
- 8 файлов находятся в папке Linux Ubuntu. Размер файла в порядке.
- 8 файлов передаются в папку Windows 7.
- Файлы отправляются на FTP-сервер с помощью FileZilla. После завершения FileZilla сообщает правильные размеры для каждого из 8 файлов.
- Файлы загружаются как в Linux Ubuntu AWA в Windows, используя как браузеры, так и приложение на основе Qt с QNetworkAccessManager. В Windows файлы также загружаются с помощью FileZilla.
- Те же 3 файла будут повреждены - проверено разными размерами.
После обсуждения проблемы в этом вопросе SO было предложено, чтобы проблема была на стороне сервера. Я провел некоторое исследование в Интернете, и я нашел это, это и это. Предлагаемые варианты - это разные расчеты размера с помощью FileZilla (сложно, так как большую часть времени я использую расчеты размера для Windows и Linux) и «проблему передачи в двоичном или ASCII-формате».
Что касается второго, мне также трудно поверить, что это так, потому что, хотя 2 из 3 проблемных файлов являются программными, а другой - двоичным, существует четвертый файл, который также является двоичным и в котором нет никаких проблем. (и другие 3 файла сжаты .tar.gz, которые, как я полагаю, также являются двоичными файлами, и, тем не менее, они загружаются по умолчанию)
Но давайте предположим, что так оно и было: мне нужно указать один из двух методов загрузки. Ну, как я могу сделать это как при загрузке через браузер, так и при загрузке через QNetworkAccessManager?
А что, если это не так: что происходит?