Вопрос

Я пытаюсь передать некоторые файлы Apple DMG по FTP, и если мы делаем это вручную через Safari или IE, то он в конечном итоге заканчивается в целости и сохранности. Однако, если я использую бесплатный FTP-клиент, который мы с большим успехом использовали для zip и exe, или если я использую скрипт Powershell, который я завершил (адаптированный из ответа на вопрос другого потока в стеке), тогда я потеряю около 1/2 Мб на файл 10,5 Мб и dmg поврежден. У кого-нибудь есть подсказки, что может пойти не так? Что я мог сделать, чтобы предотвратить это? До сих пор все, что я пробовал, это распаковывать dmg перед отправкой, и это ничего не дало. Опять же, все, кроме dmg, передается просто отлично.

К вашему сведению, я использую передачу в двоичном режиме, так что это не так ... спасибо, хотя

Это было полезно?

Решение 3

Просто чтобы все знали. Должно быть, у клиента, который я использовал, была та же проблема, что и у моего скрипта PowerShell. Я использовал StreamReader, чтобы получить байты для передачи, и он предполагал, что кодировка была неправильной. Я переключился на BinaryReader, который не работает, и теперь он работает.

Другие советы

Похоже, ваш клиент рассматривает файл dmg как текстовый файл. установите режим двоичной передачи в вашем ftp-клиенте, и он будет работать как есть.

Я всегда думал, что режим передачи ascii в ftp просто глуп. Это вызывает больше проблем, чем стоит.

Вы уверены, что все, кроме DMG, передается правильно? Похоже, проблема с кодировкой передачи. FTP поддерживает двоичные и ASCII типы передачи, в основном из-за исторического багажа. В старые времена, когда пропускная способность была ужасающей, отказ от старшего бита (который ASCII не использует) хорошо экономил время. Однако, если у вас есть какие-либо байты с установленным битом, режим передачи ASCII их потеряет - следовательно, " двоичный " режим, который ничего не усекает.

Как правило, команда для переключения режимов передачи является "bin" или "ascii".

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top