我正在尝试从邮递员表单数据上传图片。我无法得到输入
URL: localhost/sampleyii/web-app/web/imageuploads
Method: POST
{"Content-Type":"application/x-www-form-urlencoded"}
Form-data
id : 2
image : test.jpg (type:file)
在我的yii编码中:
$model = new TblImgUpload();
print_r(Yii::$app->request->post());
$model->load(Yii::$app->request->post(),'');
邮递员的回应:
Array
(
[------WebKitFormBoundarySHaGMA86OHQV87iT
Content-Disposition:_form-data;_name] => "id"
sdfgdfgdf
------WebKitFormBoundarySHaGMA86OHQV87iT
Content-Disposition: form-data; name="wretr"; filename="test.jpeg"
Content-Type: image/jpeg........
....................
我试过Content-Type => '多部分/格式数据&#39 ;.但我无法得到输入请求。
我希望将post请求输入为form-data(file)作为数组。
请提前帮助谢谢。
答案 0 :(得分:0)
$ model-> load()需要具有特定名称的帖子值。所以在邮递员中,'id'必须是'TblImgUpload [id]','image'必须是'TblImgUpload [image]'。
请注意,'id'和'image'必须在模型的rules method中作为'safe'属性返回,否则它们将无法以任何大量方式加载。
答案 1 :(得分:0)
使用yii\web\UploadedFile::getInstance()或yii\web\UploadedFile::getInstanceByName()检索上传的文件。关于如何在official docs中实现它,有一个很好的例子。
以下是我为REST应用程序使用过一次的快速代码段:
<强>控制器:强>
UPDATE
<强>型号:强>
use Yii;
use yii\web\UploadedFile;
use app\models\UploadImageForm;
class UploadController extends ActiveController
{
public function actionImage()
{
$model = new UploadImageForm();
if (Yii::$app->request->isPost) {
$model->load(Yii::$app->getRequest()->getBodyParams(), '');
$model->imageFile = UploadedFile::getInstanceByName('imageFile');
/**
* Note: when validation fails, returning the model itself
* will output the failing rules on a '422' response status.
**/
return $model->upload() ?: $model;
}
}
}