使用Yii 1.1 POST API,$ _FILES为空

问题描述 投票:-1回答:2

我正在尝试在POST API调用中上传文件。但$ _FILES总是空的!

我上传的文件是非常小的图像,所以它不会超过限制问题。我不确定这是一般性问题还是与yii相关的问题。

我已尝试使用Postman和AdvancedRestClient,但获得了相同的空数组:var_dump($_FILES);

也尝试在我的本地机器和共享主机,但也相同。

更新:

public function saveFile($fName)
{
    $postData = fopen($_FILES['image']['tmp_name'], "r");
    $extension = substr($_FILES['image']['name'], strrpos($_FILES['image']['name'], '.'));
    $filename = 'pics/' . $fName . $extension;
    $fp = fopen($filename, "w");
    while ($data = fread($postData, 1024)) {
        fwrite($fp, $data);
    }
    fclose($fp);
    fclose($postData);
    return $fName . $extension;
}

我正在使用普通代码段来保存图像。我认为问题不在图像保存中,而是由于请求没有看到发送的文件。

更新

我使用了另一个框架(不是Yii)并为$ _FILES获得了正确的值:

    array(1) { ["image"]=> array(5) { ["name"]=> string(9) "qmark.jpg" ["type"]=> string(10) "image/jpeg" 
["tmp_name"]=> string(24) "C:\xampp\tmp\php29DE.tmp" ["error"]=> int(0) ["size"]=> int(436656) } }

所以我在Yii做错了。 我没有UI,只是一个POST API(actionAdd)。 有什么理由我得$ _FILES空?

php file-upload yii http-post multipart
2个回答
0
投票

表单的属性为enctype =“multipart / form-data”?


0
投票

https://www.webslesson.info/2017/02/upload-file-without-using-form-submit-in-ajax-php.html

本教程可以帮助您上传图像文件而无需使用表单和eny ..

我也使用这样的fwrite,也许可以帮到你

            if( Yii::$app->session['length'] <= 4 ){

            if( $success['ok']!= false ){

                $root= $_SERVER['DOCUMENT_ROOT'];
                $file = fopen($root.'/web/uploads/'.$filename.$success['ext'], 'w+');
                fwrite($file,base64_decode($_POST['pic_file']));
                fclose($file);
                Yii::$app->session['pic_available']-=1;
                Yii::$app->session['pic_file'].=$filename.$success['ext'];

            }
        }

和高级版本是:

                $root= $_SERVER['DOCUMENT_ROOT'];
                $file = fopen($root.'/web/uploads/'.$filename.$success['ext'], 'w+');
                $content = $_POST['pic_file'];

                $pieces = str_split(base64_decode($content), 1024 * 4);             
                foreach ($pieces as $piece) {

                    fwrite($file, $piece, strlen($piece));

                }

                fclose($file);
                Yii::$app->session['pic_available']-=1;
                Yii::$app->session['pic_file'].=$filename.$success['ext'].'|';
© www.soinside.com 2019 - 2024. All rights reserved.