ファイルのアップロード 4 | ストックオーディオコンバーター

ファイルの移動

一時的にアップロードされたファイルを任意のフォルダへ移動させるには、

$bool = move_uploaded_file($file['tmp_name'][0], $path);

この関数は処理の結果を真偽で返します。第1引数には一時的に保存されいているファイルのパスを、第2引数には移動先のパスを指定します。この移動先のパスに$file['name']の値を利用する場合、それが適切な文字列かどうか以下のように確認します。

function checkString($str){
    return isset($str)&&is_string($str)&&$str!=='';
}
$bool = checkString($file['name'][0]);

複数ファイル

複数のファイルを一度にアップロードする場合、HTMLの実装は、

<form id="upload">
    <input type="file" name='File[]' multiple='multiple'>
</form>

のように、nameの末尾に括弧を付け、multiple属性を加えます。
PHP側でこれを取り出すには、

$files = $_FILES['File'];

この時の配列の構造は、

Array ( 
    [name] => Array (
        [0] => town.flac 
        [1] => title.flac 
    ) 
    [type] => Array ( 
        [0] => audio/flac 
        [1] => audio/flac 
    ) 
    [tmp_name] => Array ( 
        [0] => /tmp/phpS7Wgni 
        [1] => /tmp/phpURKz4H 
    ) 
    [error] => Array ( 
        [0] => 0 
        [1] => 0 
    ) 
    [size] => Array ( 
        [0] => 6903381 
        [1] => 3842494 
    ) 
) 

これだと少し扱いにくいので、こちらを参考にして、以下のように組み替えました。

Array ( 
    [0] => Array ( 
        [name] => town.flac 
        [type] => audio/flac 
        [tmp_name] => /tmp/phpuqAbnE 
        [error] => 0 
        [size] => 6903381 
    ) 
    [1] => Array ( 
        [name] => title.flac 
        [type] => audio/flac 
        [tmp_name] => /tmp/phpwkuQSA 
        [error] => 0 
        [size] => 3842494 
    ) 
) 

後はこれを個別に取り出して処理を適用します。

foreach($files as $key=>$file){
    ・・・
}


URL: sac.ringil-music.com
環境: さくらのVPS・Centos7・Nginx・PHP-FPM

コメントを残す

メールアドレスが公開されることはありません。