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

前端之家收集整理的这篇文章主要介绍了ThinkPHP+JQuery实现文件的异步上传前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

Meta charset="UTF-8"> Think<a href="https://www.jb51.cc/tag/PHP/" target="_blank" class="keywords">PHP</a>+JQuery实现<a href="https://www.jb51.cc/tag/wenjian/" target="_blank" class="keywords">文件</a>的异步<a href="https://www.jb51.cc/tag/shangchuan/" target="_blank" class="keywords">上传</a>

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



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

效果图:

PHP代码">PHP代码

PHP">use think\Controller;

class Index extends Controller
{
// 上传表单页面
public function index()
{
return $this->fetch();
}

// <a href="https://www.jb51.cc/tag/shangchuan/" target="_blank" class="keywords">上传</a><a href="https://www.jb51.cc/tag/wenjian/" target="_blank" class="keywords">文件</a>接口
public function uploadApi(){
    // <a href="https://www.jb51.cc/tag/huoqu/" target="_blank" class="keywords">获取</a><a href="https://www.jb51.cc/tag/wenjian/" target="_blank" class="keywords">文件</a>
    $file = request()->file('image');
    if($file){
        // 校验数组
        $validateArr = [ 'ext' => 'jpg,jpeg,gif,png,bmp' ];
        // <a href="https://www.jb51.cc/tag/wenjian/" target="_blank" class="keywords">文件</a>的本地存储路径
        $path = ROOT_PATH . 'public' . DS . 'upload';
        // 校验并移动
        $info = $file->validate($validateArr)->move($path);
        // 检查移动结果
        if($info){
            // <a href="https://www.jb51.cc/tag/shangchuan/" target="_blank" class="keywords">上传</a>成功

            // <a href="https://www.jb51.cc/tag/shuchu/" target="_blank" class="keywords">输出</a> jpg
            #echo $info->getExtension();

            // <a href="https://www.jb51.cc/tag/shuchu/" target="_blank" class="keywords">输出</a> 20160820/42a79759f284b767dfcb2a0197904287.jpg
            #echo $info->getSaveName();

            // <a href="https://www.jb51.cc/tag/shuchu/" target="_blank" class="keywords">输出</a> 42a79759f284b767dfcb2a0197904287.jpg
            #echo $info->getFilename();

            // <a href="https://www.jb51.cc/tag/wenjian/" target="_blank" class="keywords">文件</a>的原<a href="https://www.jb51.cc/tag/wenjian/" target="_blank" class="keywords">文件</a>名
            $sourceInfo = $info->getInfo();
            $sourceName = $sourceInfo['name'];

            // 拼装url
            $url = '/upload/'.$info->getSaveName();
            $url = str_replace('\\','/',$url); // Windows下替换路径分隔符

            // other some operations ...

            // 返回json,告知客户端<a href="https://www.jb51.cc/tag/shangchuan/" target="_blank" class="keywords">上传</a>结果
            $json = json_encode([
                'errcode'   => '10000','errmsg'    => 'Upload success','data'      => [ 'url' => $url ]
            ]);
        }else{
            // <a href="https://www.jb51.cc/tag/shangchuan/" target="_blank" class="keywords">上传</a>失败,返回json,告知客户端
            $json = json_encode([
                'errcode'   => '20002','errmsg'    => 'Upload <a href="https://www.jb51.cc/tag/Failed/" target="_blank" class="keywords">Failed</a>',]);
        }
    }else{
        // 未<a href="https://www.jb51.cc/tag/shangchuan/" target="_blank" class="keywords">上传</a><a href="https://www.jb51.cc/tag/wenjian/" target="_blank" class="keywords">文件</a>
        $json = json_encode([
            'errcode'   => '20001','errmsg'    => 'File not uploaded',]);
    }
    return $json;
}

}


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

上传成功">2. 上传成功

图片">4. 查看图片

上传目录">5. 查看上传目录

错误">可能出现的错误

PHP的上传限制">1. PHP上传限制

解决方法 打开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指的是上传文件的最大大小。

本文链接PHP-ajax-upload.html" class="uri">https://www.cnblogs.com/connect/p/thinkPHP-ajax-upload.html

原文链接:https://www.f2er.com/thinkphp/69347.html

猜你在找的ThinkPHP相关文章