2012-03-19 9 views
0

私はftp-getを使ってサーバーから画像をダウンロードしました。しかし、偶然私はFTP_ASCIIモードを使用していたので、問題があります。イメージを読み取ることができませんでした。何らかのエラーがあります。ASCII形式で保存された画像をバイナリ形式に変換するにはどうすればよいですか?

画像をもう一度ダウンロードするオプションはありません。 これらのファイルをバイナリ形式に変換する方法や、これらのファイルを修復する方法を知っている人は誰ですか?

+0

おはようございます。私は何らかの方法があると確信していますが、答えはありません - あきらめないでください! – deed02392

+1

も参照してください。http://superuser.com/questions/195612/recovering-corrupted-files-uploaded-in-wrong-ftp-mode –

+0

イメージファイルの種類とダウンロードしたOSはどれですか? – deed02392

答えて

2

ASCIIモードがバイナリモードに比べて機能するため、ファイルを修復する保証はありません。

FTP ASCIIモードは、行末をソースと宛先のオペレーティングシステム間の適切なタイプに変換するように設計されています。 * nixとWindowsの間で転送する場合、ここで行われる最も一般的な変換は\n0x0a)は\r\n0x0d0a)になり、逆も同様です。

Linuxサーバの画像をWindowsマシンに転送しているのに、誤ってASCIIモードを使用しているとします。 FTPクライアントは、着信データの\nシーケンスを探して、ディスクに保存するデータの\r\nに変換します。つまり、バイナリデータのどこにでも0x0aがあると、新しいデータには0x0d0aになります。しかし、の既存の\r\n\r\r\nに変換しません。これはそのままです。問題はないと思いますが、0x0d0aをすべて0x0aに戻してファイルを修復します。しかし、待って...既存の\r\nシーケンスが変換されなかった場合、この新しい変換パスで間違った方法で変換されます。

データが完全に破損しているかどうかは不明です。正しいデータを取得する方法が100%保証されているのは、バイナリモードで再びサーバーからコピーすることだけです。

+0

これは、リンクされたスーパーユーザーソリューションがどのように機能するかを示します。つまり、0x0d0aのインスタンスに基づいてデータの再構築を行い、テストが有効です。このユーザーはそのソースを試してみるべきですが、イメージがASCIIデータのフィックスの組み合わせで有効になっているかどうかをテストする方法を実装してください。 – deed02392

+0

転送はLinuxからLinux OSに移ったので、これに問題はないはずです。 しかし、私はまだ変換を行う方法がわかりません。私はいくつかのPHP関数を試しましたが、画像stilは動作しません。あなたは何かを提案できますか? PS。私は再びファイルをダウンロードすることはできません。 – Sorprop

+0

linuxからlinuxに至った場合、 '0x0d'のすべての出現が' 0x0a'に変換されているので、破損が発生しています。しかし、破損したファイルのすべての* 0x0aが0x0dである可能性は低いですが、ファイルを修復する唯一の方法は無理です。これは簡単な作業ではなく、簡単な方法はありません...元のサーバーから元のデータを取得する方法はありません。どのくらいの大きさのファイルがここで話していますか? – DaveRandom

0

他の人に記載されているように、データは破損しており、潜在的に回復不能です。

しかし、0x0D 0x0Aは、ほとんどのバイナリファイルフォーマットでは特によくあるシーケンスのシーケンスではありません。したがって、ファイルを修正するかどうかを確認するために置き換えてみる価値があります。

fixgz utilityはこれだけです。その名前にもかかわらず、.gzipファイルに特有のものはなく、どのファイルでも使用できます。

幸運を祈る!

関連する問題