<h2 id="前端代码">前端代码
<pre class="html"><!DOCTYPE html>
<form id="ajax-upload-demo" enctype="multipart/form-data">
<script src="https://cdn.bootcss.com/jquery/2.2.4/jquery.min.js">
效果图:
use think\Controller;
class Index extends Controller
{
// 上传表单页面
public function index()
{
return $this->fetch();
}
// 上传文件接口
public function uploadApi(){
// 获取文件
$file = request()->file('image');
if($file){
// 校验数组
$validateArr = [ 'ext' => 'jpg,jpeg,gif,png,bmp' ];
// 文件的本地存储路径
$path = ROOT_PATH . 'public' . DS . 'upload';
// 校验并移动
$info = $file->validate($validateArr)->move($path);
// 检查移动结果
if($info){
// 上传成功
// 输出 jpg
#echo $info->getExtension();
// 输出 20160820/42a79759f284b767dfcb2a0197904287.jpg
#echo $info->getSaveName();
// 输出 42a79759f284b767dfcb2a0197904287.jpg
#echo $info->getFilename();
// 文件的原文件名
$sourceInfo = $info->getInfo();
$sourceName = $sourceInfo['name'];
// 拼装url
$url = '/upload/'.$info->getSaveName();
$url = str_replace('\\','/',$url); // Windows下替换路径分隔符
// other some operations ...
// 返回json,告知客户端上传结果
$json = json_encode([
'errcode' => '10000','errmsg' => 'Upload success','data' => [ 'url' => $url ]
]);
}else{
// 上传失败,返回json,告知客户端
$json = json_encode([
'errcode' => '20002','errmsg' => 'Upload failed',]);
}
}else{
// 未上传文件
$json = json_encode([
'errcode' => '20001','errmsg' => 'File not uploaded',]);
}
return $json;
}
}
<h2 id="上传测试">上传测试
class Index extends Controller
{
// 上传表单页面
public function index()
{
return $this->fetch();
}
// 上传文件接口
public function uploadApi(){
// 获取文件
$file = request()->file('image');
if($file){
// 校验数组
$validateArr = [ 'ext' => 'jpg,jpeg,gif,png,bmp' ];
// 文件的本地存储路径
$path = ROOT_PATH . 'public' . DS . 'upload';
// 校验并移动
$info = $file->validate($validateArr)->move($path);
// 检查移动结果
if($info){
// 上传成功
// 输出 jpg
#echo $info->getExtension();
// 输出 20160820/42a79759f284b767dfcb2a0197904287.jpg
#echo $info->getSaveName();
// 输出 42a79759f284b767dfcb2a0197904287.jpg
#echo $info->getFilename();
// 文件的原文件名
$sourceInfo = $info->getInfo();
$sourceName = $sourceInfo['name'];
// 拼装url
$url = '/upload/'.$info->getSaveName();
$url = str_replace('\\','/',$url); // Windows下替换路径分隔符
// other some operations ...
// 返回json,告知客户端上传结果
$json = json_encode([
'errcode' => '10000','errmsg' => 'Upload success','data' => [ 'url' => $url ]
]);
}else{
// 上传失败,返回json,告知客户端
$json = json_encode([
'errcode' => '20002','errmsg' => 'Upload failed',]);
}
}else{
// 未上传文件
$json = json_encode([
'errcode' => '20001','errmsg' => 'File not uploaded',]);
}
return $json;
}
}
<h4 id="上传一张图片">1. 上传一张图片
解决方法
打开PHP的配置文件php.ini
- 查找
max_execution_time
,修改其值为60
或更大 - 查找
post_max_zise
,修改其值为128M
或更大 - 查找
upload_max_filesize
,修改其值为128M
或更大
原因
-
max_execution_time
指的是一次请求最长的执行秒数。如果上传文件过大,则可能服务端还没有接收完文件就结束程序了; -
post_max_size
指的是POST数据所允许的最大大小; -
upload_max_filesize
指的是上传文件的最大大小。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。