ThinkPHP+JQuery实现文件的异步上传

<h2 id="前端代码">前端代码
<pre class="html"><!DOCTYPE html>

ThinkPHP+JQuery实现文件的异步上传

<form id="ajax-upload-demo" enctype="multipart/form-data">



<script src="https://cdn.bootcss.com/jquery/2.2.4/jquery.min.js"&gt;

效果图:

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="上传测试">上传测试


<h4 id="上传一张图片">1. 上传一张图片

解决方法 打开PHP的配置文件php.ini

  1. 查找max_execution_time,修改其值为60或更大
  2. 查找post_max_zise,修改其值为128M或更大
  3. 查找upload_max_filesize,修改其值为128M或更大

原因

  1. max_execution_time指的是一次请求最长的执行秒数。如果上传文件过大,则可能服务端还没有接收完文件就结束程序了;
  2. post_max_size指的是POST数据所允许的最大大小;
  3. upload_max_filesize指的是上传文件的最大大小。

本文链接:

相关文章

(1)创建数据表: CREATE TABLE IF NOT EXISTS `think_form` ...
组合查询的主体还是采用数组方式查询,只是加入了一些特殊的...
(1)创建模版:/App/Home/View/Form/edit.html   <FORM m...
自定义配置文件user.php: <?php return array(    \'se...
在一些成熟的CMS系统中,后台一般都包含一个配置中心(如织梦...
废话不多说先上图预览下,即本博客的分页; 这个分页类是在...