2016-08-15 4 views
1

私がしようとすると、以下のようにファイルをアップロード: Laravel 5.2ファイルアップロード

$name = $img->getClientOriginalName(); 
$fullPath = Product::getUploadPath(); // Returns public_path(); with custom directory appended 
$uploaded = $img->move($fullPath, $name); 

は、私は以下のエラーが表示されます。

Could not move the file 
"/private/var/folders/1l/fxl7spqj2p113fpffm3k0sy00000gn/T/phpIgpWGy" to 
"/dir/subdir/subsubdir/subsubdir/public/backend/images/products/pic.jpg"() 

はinterestsakeのために、私はイメージのために全体の解決パスを構築し、これを引数としてmove()メソッドに渡しました。以前に動作していたメモリが使用されました。

$uploaded = $img->move($fullPath.'/'.$name); 

んが、例外がスローされていない、しかし、アップロードされたファイルは、今ディレクトリになります:

"/dir/subdir/subsubdir/subsubdir/public/backend/images/products/pic.jpg/" 

私は私の画面を通じて私の拳を駆動するに非常に近いです。

+0

睡眠不足になる可能性がありますが、私はこのコードが既知の問題なしで以前に動作していたことを確信しています。しかし、最近、画像のサイズを変更するための介入プラグインをインストールしましたが、デバッグ中、私のApp Kernelから。 –

+1

掘りすぎていないと、ターゲットディレクトリの権限をチェックしましたか? 'UploadedFile'クラスの' move() 'メソッドはPHPの' move_uploaded_file() '関数を呼び出します。彼らはその呼び出しからのエラーを抑制しますが、あなたが見ているカスタムメッセージで 'FileException'を投げます。 2番目の試行でディレクトリとして作成されるファイルは、最初のパラメータがターゲットディレクトリであり、2番目の名前がファイル名であるため意味があります。ファイル名はなく、ディレクトリのみが解決されます。 – stratedge

+0

ディレクトリが存在しない場合にlaravelが 'move()'が呼び出されたときにパスを作成する可能性があります。また、ディレクトリを作成すると、そのディレクトリは空ではなく、一時的に存在するPHPのように見えます。 –

答えて

1

権限の問題である可能性があります - PHPプロセスを実行しているユーザーは、ファイルが保存されるディレクトリへの書き込みアクセス権を持っている必要があります。 777にディレクトリをchmod'ingしてテストすることができれば、少なくとも許可の可能性に即座にyesかnoを与えるでしょう。

また、symfonyのUploadedFile::move()メソッドはPHPのmove_uploaded_file()関数に戻ります。この関数は、ファイルの移動時にドキュメンテーションのコメントによれば見つからないディレクトリを作成しません。

ファイルをアップロードするときは、これまでにすべてがありました。怒っている可能性があります。