0

php を使用して複数の画像をフォルダにアップロードしようとしています。コードはファイル名を出力できます。つまり、ファイルを取得できますが、ファイルをアップロードせず、エラーは発生しません。以下は私のコードです

<?php 
    $target = "image_uploads/";
    if(isset($_FILES['FILE_NAME'])){
        foreach($_FILES['FILE_NAME']['tmp_name']as $key => $error ){
           print_r($key);
           $file_upload = $key.$_FILES['FILE_NAME']['name'][$key];
           #print image names
           echo $file_upload.'</br>';
          move_uploaded_file($file_upload,$target);    
        }
    }
?>
4

4 に答える 4

2

ターゲットでは、ファイル名も指定する必要があります。以下のコードを使用してください。

$target = "image_uploads/";
if(isset($_FILES['FILE_NAME'])){
    foreach($_FILES['FILE_NAME']['tmp_name'] as $key => $error ){
        print_r($key);
        $file_upload = $key.$_FILES['FILE_NAME']['name'][$key];
        print image names
        echo $file_upload.'</br>';
        move_uploaded_file($file_upload,$target.$_FILES['FILE_NAME']['name']);    
    }
}
于 2013-02-08T13:03:28.720 に答える
1

問題は foreach ループにあると思います。

foreach ($_FILES['FILE_NAME']['tmp_name'] as $key => $val) {
    // this loops through the tmp_name of $_FILES['FILE_NAME']
    // which is a string
}

次のような意味だったと思います。

foreach ($_FILES as $index => $fileArray) {
    $tmpName = $fileArray['tmp_name'];
    echo "File at key $index is temporarily uploaded at $tmpName";
}

上記のコードは、アップロードされたすべてのファイルをループし、現在のファイル名を出力します。

于 2013-02-08T13:09:29.553 に答える
0

ターゲット フォルダーが書き込み可能でない場合があります。

また、エラーが発生しない原因は、次の場合だと思います。

print_r($key);

あなたが持っている必要があります:

print_r($error);
于 2013-02-08T13:02:16.497 に答える
0

これには複数の理由が考えられます。

  1. ファイルを一時的な場所からターゲットに移動する前に、ターゲット フォルダーが存在し、書き込み可能である必要があります。

  2. move_uploaded_file は 2 番目の引数をファイル名とそれに続くディレクトリ名として取るため、次のようになります: target folder/user.file.name.ext

  3. 複数のファイルをアップロードする場合は、リンクに示すように $_FILES にアクセスする必要があります: http://php.net/manual/en/features.file-upload.multiple.php

  4. 発生する可能性のある php エラー メッセージについては、次のリストを参照してください: http://php.net/manual/en/features.file-upload.errors.php

于 2013-02-08T13:15:04.233 に答える