think php上传图片,上传 · ThinkPHP5.0完全开发手册 · 看云

 2023-09-19 阅读 14 评论 0

摘要:## 上传文件`ThinkPHP5.0`对文件上传的支持更加简单。> 内置的上传只是上传到本地服务器,上传到远程或者第三方平台的话需要自己扩展。假设表单代码如下:~~~php设计模式。~~~然后在控制器中添加如下的代码:~~~public function upload(){// 获

## 上传文件

`ThinkPHP5.0`对文件上传的支持更加简单。

> 内置的上传只是上传到本地服务器,上传到远程或者第三方平台的话需要自己扩展。

假设表单代码如下:

~~~

php设计模式。~~~

然后在控制器中添加如下的代码:

~~~

public function upload(){

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

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

php图片上传、// 移动到框架应用根目录/public/uploads/ 目录下

if($file){

$info = $file->move(ROOT_PATH . 'public' . DS . 'uploads');

if($info){

// 成功上传后 获取上传信息

// 输出 jpg

php批量上传图片、echo $info->getExtension();

// 输出 20160820/42a79759f284b767dfcb2a0197904287.jpg

echo $info->getSaveName();

// 输出 42a79759f284b767dfcb2a0197904287.jpg

echo $info->getFilename();

}else{

thinkPHP,// 上传失败获取错误信息

echo $file->getError();

}

}

}

~~~

php,`move`方法成功的话返回的是一个`\think\File`对象,你可以对上传后的文件进行后续操作。

## 多文件上传

如果你使用的是多文件上传表单,例如:

~~~

~~~

控制器代码可以改成:

thinkphp官网、~~~

public function upload(){

// 获取表单上传文件

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

foreach($files as $file){

// 移动到框架应用根目录/public/uploads/ 目录下

php上传图片怎么搞,$info = $file->move(ROOT_PATH . 'public' . DS . 'uploads');

if($info){

// 成功上传后 获取上传信息

// 输出 jpg

echo $info->getExtension();

// 输出 42a79759f284b767dfcb2a0197904287.jpg

php怎么上传图片并保存到数据库。echo $info->getFilename();

}else{

// 上传失败获取错误信息

echo $file->getError();

}

}

php单个上传图片代码?}

~~~

## 上传验证

支持对上传文件的验证,包括文件大小、文件类型和后缀:

~~~

public function upload(){

thinkphp压缩图片?// 获取表单上传文件 例如上传了001.jpg

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

// 移动到框架应用根目录/public/uploads/ 目录下

$info = $file->validate(['size'=>15678,'ext'=>'jpg,png,gif'])->move(ROOT_PATH . 'public' . DS . 'uploads');

if($info){

// 成功上传后 获取上传信息

php上传图片并显示图片代码?// 输出 jpg

echo $info->getExtension();

// 输出 20160820/42a79759f284b767dfcb2a0197904287.jpg

echo $info->getSaveName();

// 输出 42a79759f284b767dfcb2a0197904287.jpg

echo $info->getFilename();

thinkphp5.1开发手册。}else{

// 上传失败获取错误信息

echo $file->getError();

}

}

~~~

php开发。>[danger] `getSaveName`方法返回的是图片的服务器文件地址,并不能直接用于图片的URL地址,尤其在windows平台上必须做转换才能正常显示图片。

如果上传文件验证不通过,则`move`方法返回false。

|验证参数|说明|

|---|---|

|size|上传文件的最大字节|

|ext|文件后缀,多个用逗号分割或者数组|

thinkphp与php的区别、|type|文件MIME类型,多个用逗号分割或者数组|

> 还有一个额外的自动验证规则是,如果上传的文件后缀是图像文件后缀,则会检查该文件是否是一个合法的图像文件。

## 上传规则

默认情况下,会在上传目录下面生成以当前日期为子目录,以微秒时间的`md5`编码为文件名的文件,例如上面生成的文件名可能是:

~~~

/home/www/upload/20160510/42a79759f284b767dfcb2a0197904287.jpg

php 文件上传。~~~

我们可以指定上传文件的命名规则,使用`rule`方法即可,例如:

~~~

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

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

// 移动到服务器的上传目录 并且使用md5规则

php如何添加图片?$file->rule('md5')->move('/home/www/upload/');

~~~

最终生成的文件名类似于:

~~~

/home/www/upload/72/ef580909368d824e899f77c7c98388.jpg

~~~

系统默认提供了几种上传命名规则,包括:

|规则|描述|

|---|---|

|date|根据日期和微秒数生成|

|md5|对文件使用md5_file散列生成|

|sha1|对文件使用sha1_file散列生成|

> 其中md5和sha1规则会自动以散列值的前两个字符作为子目录,后面的散列值作为文件名。

如果需要使用自定义命名规则,可以在`rule`方法中传入函数或者方法,例如:

~~~

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

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

// 移动到服务器的上传目录 并且使用uniqid规则

$file->rule('uniqid')->move('/home/www/upload/');

~~~

生成的文件名类似于:

~~~

/home/www/upload/573d3b6d7abe2.jpg

~~~

如果你希望保留原文件名称,可以使用:

~~~

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

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

// 移动到服务器的上传目录 并且使用原文件名

$file->move('/home/www/upload/','');

~~~

默认情况下,会覆盖服务器上传目录下的同名文件,如果不希望覆盖,可以使用:

~~~

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

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

// 移动到服务器的上传目录 并且设置不覆盖

$file->move('/home/www/upload/',true,false);

~~~

## 获取文件hash散列值

可以获取上传文件的哈希散列值,例如:

~~~

// 获取表单上传文件

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

// 移动到服务器的上传目录 并且使用原文件名

$upload = $file->move('/home/www/upload/');

// 获取上传文件的hash散列值

echo $upload->md5();

echo $upload->sha1();

~~~

`v5.0.1`以上版本可以统一使用hash方法获取文件散列值

~~~

// 获取表单上传文件

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

// 移动到服务器的上传目录 并且使用原文件名

$upload = $file->move('/home/www/upload/');

// 获取上传文件的hash散列值

echo $upload->hash('sha1');

echo $upload->hash('md5');

~~~

## 返回对象

上传成功后返回的仍然是一个`File`对象,除了File对象自身的方法外,并且可以使用`SplFileObject`的属性和方法,便于进行后续的文件处理。

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/2/77548.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息