2

У меня есть PDF-файл размером 100 КБ, который мы назовем Test.pdf . Я использую FTP, чтобы разместить Test.pdf на моем сайте. Тем не менее, PDF-файл поврежден при поступлении на веб-сайт. Так что в качестве диагностического теста я побежал:

$ md5sum Test.pdf
[md5sum a]
$ [ftp upload Test.pdf]
$ [ftp скачать Test.pdf]
$ md5sum Test.pdf
[md5sum b]

Так что в какой-то момент в процессе загрузки файл поврежден! Это сбивает с толку меня. У меня никогда не было этой проблемы с любым другим типом файла. Я также пытался использовать клиент ручной загрузки моего веб-провайдера, но столкнулся с той же проблемой. Что тут происходит?

2 ответа2

5

Вы уже сами ответили, но я думаю, что я могу сделать лучше, чем, Apparently certain types of files need to be uploaded in binary .

Сначала небольшая справочная информация:

1: компьютеры, биты и байты.

Наименьшая часть информации в компьютере немного. Бит имеет значение true или false,) или 1, высокое напряжение или заземление, ...

Биты сгруппированы в небольшие наборы. Практически для всех современных компьютеров в группах по восемь человек. Мы называем это байтом.

Набор из 8 бит / 1 байт может иметь 256 различных значений, начиная с
00000000 означает 0
00000001 означает 1
00000010 означает 2
00000011 означает 3 (оба 2+1 установлены)
00000100 означает 4
...
11111111 означает 255

2: ASCII.

ASCII представляет собой набор из 128 символов, пронумерованных от 0 до 127. Вам нужно только 7 бит для этого. В старые времена это было все, что вам нужно для общения. Просто обычная буква 26 в западном алфавите, цифры от 0 до 9 и некоторые специальные коды обозначаются цифрой 7: звоните в звонок или подайте звуковой сигнал.

В наши дни мы определяем гораздо больше персонажей. Мы используем UTF-16 и Unicode, что позволяет использовать китайский, японский, язык с написанием справа налево и т.д. И т.д. В прежние времена у нас еще не было поддержки этого в общих местах.

3: Наконец: пропускная способность / была дорогой.

Мы отправляем все 8 битов в место назначения, когда вы знаете, что вам нужно только 7 из них для представления текста? Если вы делаете все правильно, вы можете сэкономить 1/8 полосы пропускания.

Это может показаться не таким уж большим, чтобы использовать его сегодня, но в эпоху, когда Европа-США соединяются по линии со скоростью 1200 бод, что составляет около 0,1 КБ / с!) каждый немного помог.

Итак, предположим, я хочу написать "Привет".

Я могу посмотреть это в таблице ASCII и обнаружу, что ваш компьютер будет хранить это в четырех байтах, содержащих это:

H        e        l        l        o
01001000 01100101 01101100 01101100 01101111  

Обратите внимание, что первые биты всех букв равны 0. С таким же успехом я мог бы вспомнить эту часть:

H        e        l        l        o
 1001000  1100101  1101100  1101100 1101111  

Первый пример имеет 32 бита (4 байта, каждый 8 бит информации).
Второй пример имеет только 28 бит. Это более эффективно.

Это делает его предпочтительным методом передачи текста. Однако, пропуская первый бит, вы нарушите все, что не является текстом. Таким образом, протокол FTP был разработан с двумя вариантами: режим ASCII (эффективен для текста) и режим BINary (передача как есть).


Хорошо, со всем, что известно:

Вы передали двоичные файлы (например, PDF) в режиме ASCII, который не передал всю информацию. Таким образом, полученные файлы были повреждены в месте назначения.

Чтобы передать что-либо, кроме простого старого текста, используйте команду «bin» в приглашении FTP или отметьте опцию «bin», если вы используете графический интерфейс.

Я надеюсь, что это отвечает «Что здесь происходит?:)

1

Проблема заключалась в том, что я загружал Test.pdf в ascii mode , а не в binary mode . Очевидно, что определенные типы файлов (например, .pdf, .zip) необходимо загружать в двоичном формате, а не в режиме ascii. (Предположительно, это как-то связано с представлением файла на системном уровне.) Это было легко исправить, изменив режим загрузки на двоичный в ftp, используя binary команду:

$ ftp [myserver]
ftp> двоичный
ftp> поставить Test.pdf

Вот полезная ссылка.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .