如何实现ThinkPHP6中的文件上传功能

来源:undefined 2024-12-26 19:19:28 1018

随着互联网的不断发展,越来越多的网站需要实现文件上传功能。在thinkphp6中,实现文件上传功能也变得非常简单。今天我们就来介绍一下如何在thinkphp6中实现文件上传功能。

一、配置文件上传参数

在开始实现文件上传功能之前,首先需要在ThinkPHP6的配置文件中设置文件上传的参数。找到项目的配置文件config/app.php,然后在params数组中添加以下代码:

1

2

3

4

5

6

7

upload => [

maxSize => 1024 * 1024 * 10, //文件上传的最大大小

exts => [jpg, gif, png, jpeg], //允许上传的文件后缀

rootPath => app()->getRootPath() . public/uploads/, //文件上传的根目录

savePath => , //文件保存的子目录

subName => [date, Ymd], //子目录名称的命名规则

],

登录后复制

这里我们设置了文件上传的最大大小为10MB,允许上传的文件后缀为jpg、gif、png、jpeg四种格式,文件上传的根目录为public/uploads/,同时设置了子目录名称的命名规则为按日期(年月日)来命名。

二、实现文件上传功能

在配置好文件上传参数之后,就可以开始实现文件上传功能了。在控制器中编写以下代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

public function upload()

{

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

if ($file) {

$info = $file->validate([ext => jpg,png,gif,jpeg])->move(config(upload.rootPath));

if ($info) {

$data = [

code => 0,

msg => 上传成功,

url => config(upload.rootPath) . $info->getSaveName(),

];

} else {

$data = [

code => 1,

msg => $file->getError(),

url => ,

];

}

} else {

$data = [

code => 1,

msg => 请选择要上传的文件,

url => ,

];

}

return json($data);

}

登录后复制

这里我们首先通过request()->file(image)方法获取上传的文件,判断文件是否存在;接着使用validate()方法对上传的文件后缀进行验证,确保用户上传的文件格式正确;最后使用move()方法进行文件上传,并返回上传成功或上传失败的结果。

三、页面实现

最后,我们需要在页面上实现文件上传功能,代码如下:

1

登录后复制
上传 <script> $(function() { $(#btn-upload).click(function() { var formData = new FormData($(#upload-form)[0]); $.ajax({ url: $(#upload-form).attr(action), type: post, data: formData, contentType: false, processData: false, success: function(res) { if (res.code === 0) { alert(res.msg); $(#image).val(); } else { alert(res.msg); } }, error: function(xhr, status, error) { alert(上传错误: + error); } }); }); }); </script>

这里我们在页面上添加了一个form表单,上传文件的input标签的name值为image,接着使用jQuery的ajax()方法将form数据以FormData方式上传到控制器中,在上传成功或失败后进行相应的提示。

四、总结

通过以上代码实现,我们已经成功在ThinkPHP6中实现文件上传功能。同时,我们也要注意安全性,确保用户上传的文件格式正确、大小合适,避免上传的文件对系统造成危害,保障用户和系统的安全。

以上就是如何实现ThinkPHP6中的文件上传功能的详细内容,更多请关注php中文网其它相关文章!

最新文章