当前位置:网站首页 > tp日志 > 正文

thinkphp6.0实现图片上传实战

thinkphp教练

  一个好的框架足够让做很多事情,比如thinkphp,laravel、YII等。用的比较多的还是以thinkphp为主。比如我很早之前的一份工作就是基于thinkphp3.2做的一个系统,靠这个系统我能每个月拿6000多的工资。

   所以thinkphp能搞事情,能让你找一份工作,也能让你有很多副业收入来源。

   thinkphpedu 最近即将有一套升级版的thinkphp6.0的基础视频教程,将在51cto学院和csdn学院上线。



   这个章节分享的是用thinkphp6.0做一个图片上传的前后端功能。

  

<form action="/index/upload" enctype="multipart/form-data" method="post">

<input type="file" name="image" /> <br> 

<input type="submit" value="上传" /> 

</form> 



这个是一个基础的表单代码。因为我们是要上传图片,是文件的一种。  enctype="multipart/form-data"   这个属性一定要加上去。 input的type值是file哦。   然后为了待会用thinkphp做接收保存图片方便拿到数据。name这个记得取一个值。比如上面用image。



后端接收文件上传的代码如下。



public function upload(){

    // 获取表单上传文件 例如上传了001.jpg

    $file = request()->file('image');

    // 上传到本地服务器

    $savename = \think\facade\Filesystem::putFile( 'topic', $file);

}



如果仅仅只是这样写,那么就会默认上传到runtime/storage



runtime/storage目录下面生成以当前日期为子目录,以微秒时间的md5编码为文件名的文件,例如上面生成的文件名可能是:



runtime/storage/topic/20200723/42a79759f284b767dfcb2a0197904287.jpg



当然,为了更适合我们常规或者之前使用过thinkphp5.1的存储习惯,放在public下面。那么可以这样写代码。

$savename = \think\facade\Filesystem::disk('public')->putFile( 'topic', $file);





当然,还有其他更严谨的验证操作,具体你可以看一下thinkphp6.0的 手册。