FTP-Upload Beschädigtes PDF

2

Ich habe eine 100-KB-PDF-Datei, die wir anrufen werden Test.pdf. Ich verwende FTP, um Test.pdfmeine Website zu veröffentlichen. Die PDF-Datei ist jedoch beschädigt, wenn sie auf der Website eingeht. Also lief ich als diagnostischer Test:

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

Irgendwann beim Hochladen wird die Datei beschädigt! Das verwirrt mich. Ich hatte dieses Problem noch nie mit einem anderen Dateityp. Ich habe auch versucht, den manuellen Upload-Client meines Website-Anbieters zu verwenden, bin jedoch auf dasselbe Problem gestoßen. Was ist hier los?

Newb
quelle
3
Sie laden wahrscheinlich nicht im Binärmodus, sondern im ASCII-Modus hoch.
McKracken
Ah! Wie lade ich im Binärmodus über die Befehlszeile hoch?
Newb
Macht nichts, verstanden!
Newb
@ekaj Ich habe meine Frage unten beantwortet.
Newb

Antworten:

5

Du hast selbst schon geantwortet, aber ich denke, ich kann es besser als Apparently certain types of files need to be uploaded in binary.

Zuerst ein paar kleine Hintergrundinformationen:

1: Computer, Bits und Bytes.

Der kleinste Teil der Informationen in einem Computer ist ein bisschen. Ein Bit ist entweder wahr oder falsch,) oder 1, Hochspannung oder Masse, ...

Die Bits sind in kleine Gruppen zusammengefasst. Für fast alle modernen Computer in Achtergruppen. Wir nennen das ein Byte.

Ein Satz von 8 Bits / 1 Byte kann 256 verschiedene Werte haben, beginnend mit
00000000 für 0
00000001 für 1
00000010 für 2
00000011 für 3 (beide 2 + 1 sind gesetzt)
00000100 für 4
...
11111111 für 255

2: ASCII.

ASCII ist ein Satz von 128 Zeichen, nummeriert von 0 bis 127. Sie benötigen dafür nur 7 Bits. An alten Tagen war das alles, was Sie für die Kommunikation brauchten. Nur der reguläre Buchstabe 26 im Western Alfabet, die Zahlen 0 bis 9 und einige Sondercodes werden mit 7 angezeigt: Klingeln oder Signalton.

In diesen Tagen definieren wir viel mehr Zeichen. Wir verwenden UTF-16 und Unicode und erlauben Chinesisch, Japanisch, von rechts nach links usw. Früher hatten wir noch keine Unterstützung dafür.

3: Zuletzt: Bandbreite ist / war teuer.

Wir senden alle 8 Bits eines Bits an ein Ziel, wenn Sie wissen, dass Sie nur 7 davon benötigen, um den Text darzustellen? Wenn Sie die Dinge auf intelligente Weise erledigen, können Sie 1/8 der Bandbreite einsparen.

Das hört sich heute vielleicht nicht so viel an, aber in der Zeit, als die Europa-zu-USA-Verbindung eine 1200-Baud-Einwahlleitung (das sind ungefähr 0,1 KB / s!) War, hat jedes bisschen geholfen.

Angenommen, ich möchte "Hallo" schreiben.

Ich kann das in der ASCII-Tabelle nachschlagen und ich werde feststellen, dass Ihr Computer das in vier Bytes speichern würde, die dies enthalten:

H        e        l        l        o
01001000 01100101 01101100 01101100 01101111  

Beachten Sie, dass die ersten Bits aller Buchstaben 0 sind. Ich kann mich genauso gut an diesen Teil erinnern:

H        e        l        l        o
 1001000  1100101  1101100  1101100 1101111  

Das erste Beispiel hat 32 Bits (4 Bytes, jeweils 8 Informationsbits).
Das zweite Beispiel hat nur 28 Bits. Es ist effizienter.

Dies macht es zur bevorzugten Methode zum Übertragen von Text. Wenn Sie jedoch das erste Bit weglassen, wird alles zerstört, was kein Text ist. Daher wurde das FTP-Protokoll mit zwei Optionen entworfen: ASCII-Modus (effizient für Text) und BINary-Modus (Übertragung wie sie ist).


OK, bei allem was bekannt ist:

Sie haben Binärdateien (z. B. PDFs) im ASCII-Modus übertragen, bei denen nicht alle Informationen übertragen wurden. Dadurch sind die resultierenden Dateien am Zielort verstümmelt angekommen

Verwenden Sie den Befehl 'bin' an der FTP-Eingabeaufforderung oder aktivieren Sie die Option 'bin', wenn Sie eine grafische Benutzeroberfläche verwenden möchten, um nur alten Text zu übertragen.

Ich hoffe das beantwortet die Frage "Was ist hier los?" :)

Hennes
quelle
1

Das Problem war , dass ich das Hochladen Test.pdfin ascii mode, nicht binary mode. Anscheinend müssen bestimmte Dateitypen (z. B. .pdf, .zip) im Binärmodus und nicht im ASCII-Modus hochgeladen werden. (Dies hat vermutlich etwas mit der Systemebene Darstellung der Datei zu tun.) Das leicht durch Ändern des Upload-Modus festgelegt wurde ftp binär, mit dem Befehl binary, wie zum Beispiel:

$ ftp [myserver]
ftp> binary
ftp> put Test.pdf

Hier ist eine hilfreiche Referenz.

Newb
quelle