Thinkphp 上传文件(教你用最少代码实现)

11 篇文章 0 订阅

1、前端示例代码

<form action="/index/upload" enctype="multipart/form-data" method="post">
<input type="file" name="image" /> <br> 
<input type="submit" value="上传" /> 
</form> 

2、控制器接收代码

public function upload(){
    // 获取表单上传文件 例如上传了001.jpg
    $file = request()->file('image');
    // 接收示例一
    // 上传到本地服务器   默认上传到runtime/storage目录下面生成以当前日期为子目录
    $fileName = \think\facade\Filesystem::putFile( 'image', $file,'命名规则:如md5,date,sha1三种选其一,默认md5');
    //接收示例二
    // 如果是多应用的话,上传根目录默认是runtime/index/storage,如果你希望上传的文件是可以直接访问或者下载的话,可以使用public存储方式。
    $fileName = \think\facade\Filesystem::disk('public')->putFile( 'image', $file,'命名规则:如md5,date,sha1三种选其一,默认md5');

}

3、上传验证

public function upload(){
    // 获取表单上传文件
    $files = request()->file();
    try {
        validate(['image'=>'fileSize:10240|fileExt:jpg|image:200,200,jpg'])
            ->check($files);
        $savename = [];
        foreach($files as $file) {
            $savename[] = \think\facade\Filesystem::putFile( 'topic', $file);
        }
    } catch (\think\exception\ValidateException $e) {
        echo $e->getMessage();
    }
}

 4、总结

    Thinkphp6.0的上传省去了一些不必要的步骤 让上传更加便捷了  如果大家还有疑问可以参考Thinkphp6.0的官方文档

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
实现扫码登录,需要以下步骤: 1. 生成登录二维码 2. 将二维码展示给用户 3. 用户扫描二维码后,将二维码信息发送到后台 4. 后台根据二维码信息判断用户是否已扫描,并返回登录状态 下面是一个使用 ThinkPHP5 实现扫码登录的示例代码: 1. 生成登录二维码 ```php use Endroid\QrCode\QrCode; public function generateQrCode() { // 生成随机字符串作为二维码内容 $qrCodeContent = md5(uniqid(mt_rand(), true)); // 存储二维码内容到 Redis,并设置过期时间 Redis::setex($qrCodeContent, 180, 'waiting'); // 生成二维码图片并输出 $qrCode = new QrCode($qrCodeContent); return response($qrCode->writeString(), 200, [ 'Content-Type' => $qrCode->getContentType(), ]); } ``` 2. 将二维码展示给用户 将上一步生成的二维码图片展示给用户即可。 3. 用户扫描二维码后,将二维码信息发送到后台 用户扫描二维码后,会将二维码内容发送到后台。可以通过 AJAX 请求实现。 4. 后台根据二维码信息判断用户是否已扫描,并返回登录状态 ```php public function checkQrCode() { $qrCodeContent = input('post.qrCodeContent'); // 从 Redis 中获取二维码状态 $qrCodeStatus = Redis::get($qrCodeContent); if ($qrCodeStatus === false) { // 二维码不存在或已过期 return json(['status' => 'expired']); } elseif ($qrCodeStatus === 'waiting') { // 用户还未扫描二维码 return json(['status' => 'waiting']); } else { // 用户已扫描二维码,可以进行登录操作 Redis::del($qrCodeContent); // 删除二维码信息 return json(['status' => 'success']); } } ``` 以上代码仅为示例,具体实现方式可以根据实际需求进行调整。同时需要注意,示例代码中使用了 Redis 存储二维码信息,需要在项目中安装 Redis 扩展并进行配置。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杰姆小生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值