0

ファイルを Amazon s3 filebucket にプッシュしようとしています。

私はhtmlフォームを介してファイルを投稿しています。

このようなファイルへのパスを生成しようとします (フォーム送信で複数のファイルをサポートする必要があるため、$file は foreach の一部です)。

$file['tmp_name'].'/'.$file['name'];

これは、このようなファイルパスを出力します

/Applications/MAMP/tmp/php/phpZDcVQv/pdf.pdf

/Applications/MAMP/tmp/php/ は存在しますが、その中には何もありません。そのフォルダへの全員の読み取りと書き込みのアクセスを設定しました。

ライブラリを使用して画像を A​​mazon に投稿します: https://github.com/tpyo/amazon-s3-php-classまた、提供したファイルパスが存在しないと不平を言います。次のようなチェックを実行しています。

if (!file_exists($file) || !is_file($file) || !is_readable($file))

ファイルが追加されないのはなぜですか? 間違ったフォルダを参照していますか? コードを含むファイルは /web/projectname/ にあります。インターネット上の誰かが、php が一時ファイルを直接削除することについて不明確なことを言いました。これは、応答が実行された後ですか? 何らかの方法でこれに対処する必要がありますか?

問題を生成する最も単純なコード:

foreach ($_FILES as $file) {
    $filepath = $file['tmp_name'].'/'.$file['name'];
    if(file_exists($filepath)){
        echo 'true <br />';
    }else{
        echo 'false <br />';
    }

}

ファイルがアップロードされていても、この echo:es は false です。

$filepath には、上記のパスが含まれています。

4

1 に答える 1

0

マニュアルの状態として:

$_FILES['userfile']['tmp_name'] アップロードされたファイルがサーバーに保存されたファイルの一時的なファイル名。

$_FILES['userfile']['name'] クライアント マシン上のファイルの元の名前。

これは、 であるfile_exists($file['tmp_name'])べきであることを意味しますtrue

元の名前を通知するためだけにあるため、パス$file['tmp_name'].'/'.$file['name']は偽物$file['name']ですが、この名前は、アップロードされたファイルをサーバーに保存する際には使用されません。

あなたの例/Applications/MAMP/tmp/php/phpZDcVQvでは、実際にはアップロードされたファイルです。

于 2013-10-03T14:47:28.147 に答える