Вопрос: Корректировка PDF-файлов


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

$ md5sum Test.pdf
  [md5sum a]
  $ [ftp upload Test.pdf]
  $ [ftp download Test.pdf]
  $ md5sum Test.pdf
  [md5sum b]

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


2
2017-12-28 00:24


Источник


Вероятно, вы загружаетесь в ascii вместо бинарного режима. - McKracken
Ах! Как загрузить в двоичном режиме через командную строку? - Newb
Ничего, получилось! - Newb
@ekaj Я ответил на мой вопрос ниже. - Newb


Ответы:


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

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

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

Самая маленькая часть информации на компьютере немного. Бит является либо истинным, либо ложным) или 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» для использования графического интерфейса.

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


5
2017-12-28 01:09



Это был очень тщательный ответ. Благодаря! - Newb


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

$ ftp [myserver]
  ftp> двоичный
  ftp> put Test.pdf

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


1
2017-12-28 00:39