-1

PHPでファイルアップロードシステムがどのように機能するかを理解しようとしています。私のコードは次のとおりです。

if(isset($_FILES['profile_pic'])){
    $allowed_ext= array('jpg','jpeg','png','gif');
    $file_name = $_FILES['profile_pic']['name'];
    $file_ext = strtolower(end (explode('.',$file_name)));
    $file_size = $_FILES['profile_pic']['size'];
    $file_tmp = $_FILES['profile_pic']['tmp_name'];
    if(in_array($file_ext, $allowed_ext) === false || $file_size > 2000000){
        $display_block = 'display:block !important';
        $pic_errors ='<p>*  File format JPG, JPEG, GIF or PNG</p> <p>*  Smaller 1Mb</p>';
    } else {
        move_uploaded_file($file_tmp, '/members/');
        echo 'uploaded..';
    }
}//if(isset($_FILES['profile_pic']))

権限があれば、すべてがうまくいくようです。

私が得るエラーは次のとおりです。

警告:move_uploaded_file(/ members /)[function.move-uploaded-file]:ストリームを開くことができませんでした:/home/a6671212/public_html/settings.phpの116行目のディレクトリです

このエラーを修正するにはどうすればよいですか?

みんなありがとう..

私が理解したように、私には2つの問題がありました。

  1. @Prisonerが書いたように..move_uploaded_file($ file_tmp、'/ members /'); --私は/members/の後にファイル名を書きませんでした

  2. @Ketan Patelが書いたように、

私がそう言うかもしれないなら、関数は別のフォーマットに変更されるべきです。

move_uploaded_file($ file_tmp、 "/ members / $ file_name"); -二重引用符...

機能した!!!!!!!!ありがとうございます!!!

4

6 に答える 6

3

ファイル名を定義する必要があるので、次のようになります。

move_uploaded_file($file_tmp, 'members/filename.ext');

または、あなたの場合:

move_uploaded_file($file_tmp, 'members/'.$file_name);

また、/ members /は(ファイルシステムのルートにある)ディレクトリですか?そうでない場合は、membersディレクトリへの相対パスまたは絶対パスを使用します。編集:エラーから判断すると、/ members /はディレクトリであると推測しているので、これは正常に機能するはずです。

move_uploaded_file($file_tmp, '/members/'.$file_name);

最初にファイルの存在も確認することを忘れないでください。そうしないmove_uploaded_fileと、古いファイルが上書きされます。

于 2012-11-09T13:08:19.913 に答える
0

この関数move_upload_file()は、unixコマンドのように機能しmvます。ターゲットファイルのパスを指定する必要があります。

コード行をこれに変更すると、機能するはずです。

move_uploaded_file($file_tmp, './members/' . $file_name);
于 2012-11-09T13:08:43.607 に答える
0

変更してみてください

move_uploaded_file($file_tmp, '/members/');

move_uploaded_file($file_tmp, 'members/' . $filename);

(最初のスラッシュを削除し、ファイル名を追加します)

于 2012-11-09T13:09:11.177 に答える
0

この関数を使用します

  move_uploaded_file($tmp_name, "$uploads_dir/$name");
于 2012-11-09T13:10:34.887 に答える
0
move_uploaded_file($file_tmp, '/members/' . $fileName);
于 2012-11-09T13:10:35.927 に答える
0

変更してみてください

move_uploaded_file($ file_tmp、'/ members /'); move_uploaded_file($ file_tmp、'members /'+ $ filename);

そして、chamodで許可を正しく設定してください。chmod-R0755メンバー。また、アプリが$file_tempの場所にアクセスして読み取り/書き込み権限を持っていることを確認してください

于 2012-11-09T13:16:39.933 に答える