0

了解しました。一部のクライアント向けに基本的な画像アップローダーを作成していますが、ある種のバグが発生していて、髪の毛がはがれています。

$ _FILES配列を取得した後、画像の解析を容易にするために少し処理を行いますが、後処理では値が切り捨てられます。

関連するPHPは次のとおりです。

function organizeFilesArray(&$file_post) {

    $file_array = array();
    $file_count = count($file_post['name']);
    $file_keys = array_keys($file_post);

    for ($i=0; $i<$file_count; $i++) {
        foreach ($file_keys as $key) {
            $file_array[$i][$key] = $file_post[$key][$i];
            echo "$file_array[$i][$key]";
            echo " ... ";
            echo "$file_post[$key][$i]    ";
        }
        echo "$file_count ";

    }

    return $file_array;
}

if(isset($_POST)){
    $destinationDirectory = '/Applications/MAMP/htdocs/image_upload/uploads/';

    //check if _FILES array is empty or if the file was uploaded via POST
    if(!isset($_FILES['ImageFile']) || !is_uploaded_file($_FILES['ImageFile']['tmp_name'])){
        die('Something went wrong with Upload!');
    }

    //clean up the array so I can handle it simply
    //$imageArray = organizeFilesArray($_FILES['ImageFile']);
    $file_array = organizeFilesArray($_FILES['ImageFile']);
    echo" array size pp: " . sizeof($file_array);
    foreach($file_array as $file){
        //random number to be added after image name
        $randomNumber   = rand(0, 9999999999);

        //access these values by using their index position
        //$imageName  = str_replace(' ','-',strtolower($file['name']));
        $imageName  = $file['name']; //get file name
        $imageSize  = $file['size']; // Obtain original image size
        $tempSrc    = $file['tmp_name']; // Tmp name of image file stored in PHP tmp folder
        $imageType  = $file['type']; //Obtain file type, returns "image/png", image/jpeg, text/plain etc.

        echo "This is the type before we try: " . $file['type'];
        echo "This is the name before we try: " . $file['name'];
        echo "This is the size before we try: " . $file['size'];
        //make sure filetype is supported
        switch(strtolower($imageType)){
            case 'image/png':
                $createdImage =  imagecreatefrompng($file['tmp_name']);
                break;
            case 'image/gif':
                $createdImage =  imagecreatefromgif($file['tmp_name']);
                break;
            case 'image/jpeg':
            case 'image/pjpeg':
                $createdImage = imagecreatefromjpeg($file['tmp_name']);
                break;
            default:
                die('Unsupported File!:'.$imageType); //output error and exit
        }

何が起こっているのかを理解しようとして、そこにあるすべてのエコーステートメントについて申し訳ありません。何かをアップロードしようとすると、これが(Firebugから)取得されます。 ここに画像の説明を入力してください

だから..処理後、私の配列内のすべてが最初の文字に切り捨てられているように見えますか?どんな助けでも大歓迎です!

4

1 に答える 1

1

アップロードしたファイルの1つだけを分割しているようです。

変更してみてください:

$file_array = organizeFilesArray($_FILES['ImageFile']);

ただ

$file_array = organizeFilesArray($_FILES);
于 2013-02-23T00:28:16.783 に答える