7

Plupload を使用して、複数のファイルをサーバーにアップロードしています。これを使用すると、パラメータ「url:「upload.php」があります。upload.php は、受信したファイルをキャッチし、チャンクされた場合はそれらを再結合する可能性があります。完全なファイルが受信されると、元のページに応答が返され、緑色のチェックボックス アイコンが表示されます。

アップロードした写真を操作するためのすべてのメイン コードの後に​​、このページにいくつかのコードを追加しました。私の計画は、フル サイズのイメージ、lg、med、および small の 3 つのコピーを作成することです。この部分は機能しましたが、最初に元のファイルの名前を命名スキームに一致するように変更することにしました。

名前が変更されたファイルが破損しているため、3 つの小さいイメージも破損しています。

//get the original file info
$filepath = $_SERVER['DOCUMENT_ROOT'].'/uploads/';
$filepathinfo = pathinfo($filepath.$fileName);//fileName is used previously in the file

//rename original file to a unique name
$finding_id = 'xyz';
$file_name_new = uniqid($client_id . '-' . $finding_id . '-', true); //doesn't include extension
//rename($filepath.$fileName, $filepath.$file_name_new.'.'.$ext);
//copy($filepath.$fileName, $filepath.$file_name_new.'.'.$ext);

そのまま、1 つのファイルを取得するか、アップロードしたファイルの数を取得します。バイト サイズは元のファイルと正確に一致し、名前は同じままです (特定の文字の削除を除く)。

名前の変更機能だけをコメント解除すると、実際には 2 つのファイルが得られます。バイト サイズは元の写真の合計です。大きなファイルは、下部にグレーのセクションが表示されます。小さいファイルはまったく表示されません。

コピー機能のみをコメント解除すると、元のファイル、元のファイル、および別のファイルの正確に名前が変更されたコピーが得られます。サイズと破損は、名前を変更した大きなファイルと同じです。

何か案は?それはかなり簡単なはずです。

4

3 に答える 3

4
  1. ファイルが現在HTTPPOSTによってアップロードされている場合は、move_uploaded_fileを使用します
  2. このリクエストのどこかでfopen()を実行する場合は、必ず同じファイルでfclose()を呼び出してください。
于 2011-05-06T14:18:56.583 に答える
2

チャンク機能がオンになっていたことを忘れていました。何かをテストするためにそれをオンにしたに違いありません。何らかの理由で、スクリプトが実行されたとき、ファイルの最後のチャンクはまだ完全に追加されていませんでした。とにかく、すべての入力に感謝します!

于 2011-05-09T12:48:09.857 に答える
0

自分でファイルに書き込んでいますか?fflushその場合、またはへの呼び出しが欠落していることが問題である可能性がありますfclose。(ファイルの最後のチャンクが書き込まれず、PHPが書き込みに取り掛かったときにファイルが存在しなくなります。これは、Linuxまたはその他のUnixを使用している場合は発生しないはずですが、Windowsでは想定できます。)

于 2011-05-06T00:35:25.120 に答える