restful 接口 上传图片怎么实现 用curl 怎么测试? [ 2.0 版本 ]
restful 接口 上传图片怎么实现 用curl 怎么测试?
共 1 个回答
-
水平不行,不过功能实现了。 将就看,如果有更好的实现方法,更安全的代码,还请分享。
<?php /* * REST文件上传 * * * @项目 com.xxx.www * @作者 Mx * @编码 UTF-8 * @日期 2015-5-16 16:41:49 */ namespace api\controllers; use yii; /** * 类名称: uploadcontroller * 类说明: */ class UploadController extends \yii\rest\ActiveController { public $documentPath = 'documents/';//上传路径 public $modelClass = 'common\models\xxx';//我不会不继承\yii\rest\ActiveController的方式实现这里的方法,所以给了一个没有意义的model,不过下方通过 注销自带方法 去除了 本REST中队 xxx的功能,所以除非yii2自身漏洞,否则对于xxx不会有问题 public function actions() { $actions = parent::actions(); // 注销系统自带的实现方法 unset($actions['index'], $actions['update'], $actions['create'], $actions['delete'], $actions['view']); return $actions; } public function actionUpdate() { $postdata = fopen($_FILES['data']['tmp_name'], "r"); /* Get file extension */ $extension = substr($_FILES['data']['name'], strrpos($_FILES['data']['name'], '.')); /* Generate unique name */ $filename = $this->documentPath . uniqid() . $extension; /* Open a file for writing */ $fp = fopen($filename, "w"); /* Read the data 1 KB at a time and write to the file */ while ($data = fread($postdata, 1024)) fwrite($fp, $data); /* Close the streams */ fclose($fp); fclose($postdata); /* the result object that is sent to client */ $result['filename'] = $filename; $result['document'] = $_FILES['data']['name']; $result['create_time'] = date("Y-m-d H:i:s"); return $result; } }
共 2 条回复
长春子
注册时间:2013-12-23
最后登录:2015-11-02
在线时长:10小时37分
最后登录:2015-11-02
在线时长:10小时37分
- 粉丝8
- 金钱318
- 威望0
- 积分418