Thinkphp5+uploadify实现的文件上传功能示例


Posted in PHP onMay 26, 2018

本文实例讲述了Thinkphp5+uploadify实现的文件上传功能。分享给大家供大家参考,具体如下:

初次接触服务器端开发,边学习边试着做一个OTA后台服务器,费了好大劲才实现了文件上传和进度条显示。

遇到几个问题:

1. 大文件上传失败
2.上传取消X 符合显示不出来
3. 不知道如何传递变量值给后台php

记录下过程:

1. 下载uploadify 代码到工程里,如public\plug-ins\uploadify 下。
2. 前端脚本如下,

客户端在formData 中传递版本号,请看version_id 赋值方法,需要先在控制器里给它assign。

取消符合显示不了,需要修改uploadify.css 里面的background: url('uploadify-cancel.png')

注意uploadify 中uploader的写法

<form enctype="multipart/form-data" method="post" >
  <input type="file" name="uploadify" id="uploadify" multiple="true" />
</form>
<script type="text/javascript">
  <?php $timestamp = time();?>
  var maxSize = 1024 * 1024*1024;//1G
  $(function() {
    $('#uploadify').uploadify({
      'debug'  : false,
      <span style="white-space:pre">   </span> 'fileSizeLimit ': maxSize,
      'formData'   : {
        'timestamp' : '<?php echo $timestamp;?>',
        'token'   : '<?php echo md5('unique_salt' . $timestamp);?>',
        <span style="white-space:pre">    </span>'version_id': "{$version_id}"
      },
      'swf'   : '/public/plug-ins/uploadify/uploadify.swf',
      <span style="white-space:pre">    </span>'cancelImg':'/public/plug-ins/uploadify/uploadify-cancel.png',
      'uploader' : '{:url("Package/upload")}',
      <span style="white-space:pre">    </span>'fileTypeDesc'  : 'zip文件',
      <span style="white-space:pre">    </span>'fileTypeExts' : '*.zip',
      <span style="white-space:pre">   </span> 'multi': false
    });
  });
</script>

3. 后端脚本对应控制器 Package 的upload函数

注意上传文件的获取方法,不能使用Thinkphp5 官方文档那种获取方式。

保存文件名不能带特殊符号

修改php.ini: upload_max_filesize = 1024M  post_max_size=48 重启服务

public function upload(){
  $verifyToken = md5('unique_salt' . $_POST['timestamp']);
  if (!empty($_FILES) && $_POST['token'] == $verifyToken) {
  $tempFile = $_FILES['Filedata']['tmp_name'];
    /*
    $targetFolder = '/public/uploads'; // Relative to the root
  $targetPath = $_SERVER['DOCUMENT_ROOT'] . $targetFolder;
  $targetFile = rtrim($targetPath,'/') . '/' . $_FILES['Filedata']['name'];
  // Validate the file type
  $fileTypes = array('jpg','jpeg','gif','png','zip'); // File extensions
  $fileParts = pathinfo($_FILES['Filedata']['name']);
  if (in_array($fileParts['extension'],$fileTypes)) {
    move_uploaded_file($tempFile,$targetFile);
    echo '1';
  } else {
    echo 'Invalid file type.';
  }*/
    $version = model("Version")->retrieve_by_version($_POST['version_id']);
    if($version){
      $file = new File($tempFile,'rw');
      $hash_code = $file->hash();
      $time = date("Y-m-d-i-s",$_POST['timestamp']);
      $info = $file->move(ROOT_PATH . 'public' . DS . 'uploads'.DS.$version['project_name'].DS.$version['version_name'],'update_'.$time.'.zip');
      if($info){
        // 成功上传后 获取上传信息
        echo $info->getExtension();
        echo $info->getSaveName();
        echo $info->getFilename();
      }else{
        // 上传失败获取错误信息
        echo $file->getError();
      }
    }else{
      echo '找不到对应版本';
    }
  }
}

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
PHP输出控制功能在简繁体转换中的应用
Oct 09 PHP
php 多个submit提交表单 处理方法
Jul 07 PHP
PHP 伪静态隐藏传递参数名的四种方法
Feb 22 PHP
php中全局变量global的使用演示代码
May 18 PHP
PHP警告Cannot use a scalar value as an array的解决方法
Jan 11 PHP
php使HTML标签自动补全闭合函数代码
Oct 04 PHP
php中删除数组的第一个元素和最后一个元素的函数
Mar 07 PHP
php转换颜色为其反色的方法
Apr 27 PHP
php实现可运算的验证码
Nov 10 PHP
Yii rules常用规则示例
Mar 15 PHP
PHP简单获取网站百度搜索和搜狗搜索收录量的方法
Aug 23 PHP
PHP集成环境XAMPP的安装与配置
Nov 13 PHP
PHP ADODB实现事务处理功能示例
May 25 #PHP
PHP ADODB实现分页功能简单示例
May 25 #PHP
ThinkPHP5.0框架控制器继承基类和自定义类示例
May 25 #PHP
php7函数,声明,返回值等新特性介绍
May 25 #PHP
php框架CodeIgniter主从数据库配置方法分析
May 25 #PHP
CodeIgniter框架数据库基本操作示例
May 24 #PHP
PHP实现生成数据字典功能示例
May 24 #PHP
You might like
PHP XML数据解析代码
2010/05/26 PHP
阿里云PHP SMS短信服务验证码发送方法
2017/07/11 PHP
PHP ajax+jQuery 实现批量删除功能实例代码小结
2018/12/06 PHP
php layui实现前端多图上传实例
2019/07/30 PHP
用htc组件制作windows选项卡
2007/01/13 Javascript
Jquery实战_读书笔记2 选择器
2010/01/22 Javascript
extjs grid设置某列背景颜色和字体颜色的实现方法
2010/09/06 Javascript
深入理解JavaScript系列(3) 全面解析Module模式
2012/01/15 Javascript
Array.prototype.concat不是通用方法反驳[译]
2012/09/20 Javascript
javascript实现去除HTML标签的方法
2016/12/26 Javascript
vue项目中应用ueditor自定义上传按钮功能
2018/04/27 Javascript
Less 安装及基本用法
2018/05/05 Javascript
修改npm全局安装模式的路径方法
2018/05/15 Javascript
python开发的小球完全弹性碰撞游戏代码
2013/10/15 Python
Python构造函数及解构函数介绍
2015/02/26 Python
详解python时间模块中的datetime模块
2016/01/13 Python
python爬取w3shcool的JQuery课程并且保存到本地
2017/04/06 Python
Python在groupby分组后提取指定位置记录方法
2018/04/20 Python
python实现根据文件关键字进行切分为多个文件的示例
2018/12/10 Python
使用python opencv对目录下图片进行去重的方法
2019/01/12 Python
Python2 Selenium元素定位的实现(8种)
2019/02/25 Python
浅析Python数字类型和字符串类型的内置方法
2019/12/22 Python
Python编程快速上手——Excel到CSV的转换程序案例分析
2020/02/28 Python
如何基于python实现不邻接植花
2020/05/01 Python
Python 存取npy格式数据实例
2020/07/01 Python
英国天然保健品网站:Simply Supplements
2017/03/22 全球购物
酒店总经理欢迎词
2014/01/08 职场文书
机关办公室岗位职责
2014/04/16 职场文书
写求职信有哪些注意事项
2014/05/08 职场文书
暑期培训班招生方案
2014/08/26 职场文书
高二学年自我鉴定范文(2篇)
2014/09/26 职场文书
乡镇干部个人对照检查材料思想汇报
2014/10/04 职场文书
先进典型发言材料
2014/12/30 职场文书
2015年驾驶员工作总结
2015/04/29 职场文书
Golang的继承模拟实例
2021/06/30 Golang
python游戏开发Pygame框架
2022/04/22 Python