gpt4 book ai didi

rest - Rest API yii2 中的文件上传

转载 作者:行者123 更新时间:2023-12-04 14:41:55 27 4
gpt4 key购买 nike

我在 api/v1/controller/中的 Controller 文件

class ProfileController extends ActiveController
{
public $modelClass = 'app\models\Profile';

public function behaviors()
{
return [
[
'class' => 'yii\filters\ContentNegotiator',
'only' =>
['index', 'view', 'createnew','update','search'],
'formats' =>
['application/json' => Response::FORMAT_JSON,],

],
'verbs' => [
'class' => VerbFilter::className(),
'actions' => [
'index' => ['get'],
'view' => ['get'],
'createnew' => ['post'],
'update' => ['put'],
'delete' => ['delete'],
'deleteall' => ['post'],
'search' => ['get']
],

]
];
}

public function actionCreatenew() {
$model = new Profile();
$model->load(Yii::$app->request->post());



$model->asset = UploadedFile::getInstance($model, 'asset');

$name = $model->user_id;

if($model->asset) {

$model->asset->saveAs('uploads/'.$name.'.
'.$model->asset->extension);
$model->asset = $model->asset->name.'.'.
$model->asset->extension;

}



if($model->save()) {
echo json_encode(array('status'=>"Success",
'data'=>$model->attributes),JSON_PRETTY_PRINT);
} else {
echo json_encode(array('status'=>"Failure",
'error_code'=>400,
'errors'=>$model->errors),JSON_PRETTY_PRINT);
}
}

}

当我尝试使用 Postman 的访问权限时,例如:POST http://localhost/myapp/api/v1/profiles

我得到无效参数 - yii\base\InvalidParamException

响应内容不能是数组。

有什么问题??帮助将不胜感激!谢谢

最佳答案

您可以直接在 Yii2 Controller /操作中使用带有表单数据编码的 HTTP POST 在 Yii2 中轻松接收单个/多个上传的文件。

使用此代码:

    $uploads = UploadedFile::getInstancesByName("upfile");
if (empty($uploads)){
return "Must upload at least 1 file in upfile form-data POST";
}

// $uploads now contains 1 or more UploadedFile instances
$savedfiles = [];
foreach ($uploads as $file){
$path = //Generate your save file path here;
$file->saveAs($path); //Your uploaded file is saved, you can process it further from here
}

如果您使用 Postman API 客户端来测试您的 API 是如何工作的,您可以将上传端点配置为像这样为多文件上传工作:

Body form-data params for POST data request

注意:upfile[] 方括号很重要! Postman 很乐意让您在一个插槽中选择多个文件进行上传,但这实际上不起作用。通过 UploadedFile 机制按照屏幕截图中显示的方式进行操作,使 Yii2 操作可以使用一组文件。这大致相当于标准的 PHP $_FILES 超全局变量,但更容易处理。

可以上传单个文件,可以在 key 名称后使用或不使用 [] 方括号。当然,您可以根据自己的约定命名 upfile

关于rest - Rest API yii2 中的文件上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37185717/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com