!
也想出现在这里? 联系我们
广告位
当前位置:首页>开发>其他开发实例>第5集:Webman文件上传

第5集:Webman文件上传

1、获取上传文件:

获取整个上传文件数组($request->file();)

<!-- 表单代码 -->
<form method="post" action="http://127.0.0.1:8787/upload/files" enctype="multipart/form-data" />
<input name="file1" multiple="multiple" type="file">
<input name="file2" multiple="multiple" type="file">
<input type="submit">
</form>

// $request->file()返回的格式
array (
'file1' => object(webman\Http\UploadFile),
'file2' => object(webman\Http\UploadFile)
)

a.他是一个webman\Http\UploadFile实例的数组。

b.webman\Http\UploadFile类继承了 PHP 内置的 SplFileInfo 类,并且提供了一些实用的方法。

<?php
namespace app\controller;
use support\Request;
class UploadController
{
  public function files(Request $request)
  {
    foreach ($request->file() as $key => $spl_file) {
    var_export($spl_file->isValid()); // 文件是否有效,例如ture|false
    var_export($spl_file->getUploadExtension()); // 上传文件后缀名,例如'jpg'
    var_export($spl_file->getUploadMineType()); // 上传文件mine类型,例如 'image/jpeg'
    var_export($spl_file->getUploadErrorCode()); // 获取上传错误码,例如 UPLOAD_ERR_NO_TMP_DIR UPLOAD_ERR_NO_FILE UPLOAD_ERR_CANT_WRITE
    var_export($spl_file->getUploadName()); // 上传文件名,例如 'my-test.jpg'
    var_export($spl_file->getSize()); // 获得文件大小,例如 13364,单位字节
    var_export($spl_file->getPath()); // 获得上传的目录,例如 '/tmp'
    var_export($spl_file->getRealPath()); // 获得临时文件路径,例如 `/tmp/workerman.upload.SRliMu`
    }
    return response('ok');
  }
}

注意:

a.文件被上传后会被命名为一个临时文件,类似 /tmp/workerman.upload.SRliMu

b.上传文件大小受到defaultMaxPackageSize限制,默认10M,可在config/server.php文件中修改max_package_size更改默认值。

c.请求结束后临时文件将被自动清除

d.如果请求没有上传文件则$request->file()返回一个空的数组

e.上传的文件不支持 move_uploaded_file() 方法,请使用 $file->move()方法代替。

2、获取特定上传文件:

$request->file('avatar');

如果文件存在的话则返回对应文件的webman\Http\UploadFile实例,否则返回null。

<?php
namespace app\controller;
use support\Request;
class UploadController
{
  public function file(Request $request)
  {
    $file = $request->file('avatar');
    if ($file && $file->isValid()) {
    $file->move(public_path().'/files/myfile.'.$file->getUploadExtension());
    return json(['code' => 0, 'msg' => 'upload success']);
    }
    return json(['code' => 1, 'msg' => 'file not found']);
  }
}

给TA打赏
共{{data.count}}人
人已打赏
其他开发实例

分享2023年最新的15种JavaScript 速记技巧 【终极秘籍】

2023-1-8 11:30:07

其他开发实例

MySQL:存储过程(mysql存储过程异常处理)

2023-1-31 19:16:13

声明 本站上的部份代码及教程来源于互联网,仅供网友学习交流,若您喜欢本文可附上原文链接随意转载。无意侵害您的权益,请发送邮件至 [email protected] 或点击右侧 私信:林沐阳 反馈,我们将尽快处理。
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索