赞
踩
客户端选择文件先上传至服务器指定的临时文件位置中,再由临时目录中上传至指定目录的过程称为文件上传
file_uploads(允许/禁止 PHP开启HTTP文件上传(布尔))
upload_tmp_dir (文件上传临时文件所在目录(字符串))
upload_max_filesize (上传文件最大是多少(整型),单位(bytes))
max_file_uploads (允许上传最大文件数(整型))
max_execution_time (脚本在解析器终止之前运行最长时间(单位:秒))
max_input_time (脚本解析输入数据最长时间(秒))
post_max_size (允许POST数据最大值(字符串/整型))
memory_limt (允许脚本分配的最大内存量(以字节为单位))
upload_max_filesize < post_max_size <memory_limt < 系统物理内存
表单必须设置为post方式提交
必须给form增设enctype="multipart/form-data"
在服务器使用$_POST无法获取文件上传信息 ,必须使用$_FILES
$_FILES["file"]["name"] - 上传文件的名称
$_FILES["file"]["type"] - 上传文件的类型
$_FILES["file"]["size"] - 上传文件的大小,以字节计
$_FILES["file"]["tmp_name"] - 存储在服务器的文件的临时副本的名称
$_FILES["file"]["error"] - 由文件上传导致的错误代码
参照上传接口文档
请求地址
POST /logo
需进行token认证
示例:
http://adminapi.tbyue.com/logo
请求参数
名称 | 类型 | 必填 | 备注 |
---|---|---|---|
type | string | 是 | 图片类型。商品:goods;分类:category;品牌:brand |
logo | file | 是 | logo文件 |
返回数据
logo文件访问路径
返回示例
"/uploads/goods/20190530/adsdsfsgsds.png"
书写代码
- /**
- * 单文件上传接口
- * @param Request $request
- * @return \think\response\Json
- */
- public function logo(Request $request): Json
- {
- // 接收上传的类型
- $type = $request->post("type");
- // 接收文件上传
- $file = $request->file();
- // 设定文件上传的大小
- $fileSize = 1024*1024*2;
- // 验证文件上传的大小、后缀
- try {
- // 验证文件大小、后缀
- validate(['logo'=>'fileSize:'.$fileSize.'|fileExt:jpg,png'])
- ->check($file);
- $files = $request->file("logo");
- // 将图片保存至本地
- $saveName = \think\facade\Filesystem::putFile($type, $files);
- // 将文件上传的路径返回
- return success('uploads/' . $saveName);
- } catch (\think\exception\ValidateException $e) {
- return fail($e->getMessage());
- }
- }
设置路由
Route::post("images","Upload/images");
参照接口文档
请求地址
POST /images
需进行token认证
示例: http://adminapi.tbyue.com/images
请求参数
名称 | 类型 | 必填 | 备注 |
---|---|---|---|
type | string | 否 | 图片类型。默认为商品:goods |
images | string | 是 | 图片文件 |
返回数据
名称 | 备注 |
---|---|
success | 上传成功的图片地址集合 |
error | 上传成功的图片名称和错误信息集合 |
返回示例
- {
- “success”:[
- "/uploads/goods/20190530/dsgdsafdsfds.png",
- "/uploads/goods/20190530/dsfdsdgfdasd.png",
- ],
- "error":[
- {
- "name":"1.png",
- "msg":"图片尺寸错误"
- },
- {
- "name":"2.png",
- "msg":"图片类型错误"
- }
- ]
- }
书写上传逻辑
- /**
- * 批量上传图片
- * @param Request $request
- * @return Json
- */
- public function images(Request $request): Json
- {
- // 接收上传的类型
- $type = $request->post("type", "goods");
- // 接收文件上传
- $file = $request->file("images");
- // 设定文件上传的大小
- $fileSize = 1024 * 1024 * 2;
- // 存储上传失败的信息
- $error = [];
- // 存储上传成功的信息
- $success = [];
- // 循环批量验证
- foreach ($file as $val) {
- // 捕获异常
- try {
- // 验证文件大小、后缀
- validate(['images' => 'fileSize:' . $fileSize . '|fileExt:jpg'])
- ->check(['images' => $val]);
- // 上传文件
- $saveName = \think\facade\Filesystem::putFile($type, $val);
- // 将成功后的路径保存到数组中
- $success = 'uploads/' . $saveName;
- } catch (\think\exception\ValidateException $e) {
- // 记录验证错误的失败信息
- $error= [
- 'name' => $val->getOriginalName(),
- 'msg' => $e->getMessage()
- ];
- }
- }
- // 组装返回数据的结果集
- $data = [
- 'success' => $success,
- 'error' => $error
- ];
- // 返回数据
- return success($data);
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。