当前位置:首页 > CMS教程 > Thinkphp > 列表

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

发布:smiling 来源: PHP粉丝网  添加日期:2021-09-18 14:12:22 浏览: 评论:0 

这篇文章主要介绍了Thinkphp5+uploadify实现的文件上传功能,结合实例形式分析了Thinkphp5结合uploadify实现文件上传的具体步骤、原理与相关操作技巧,需要的朋友可以参考下。

本文实例讲述了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的写法

  1. <form enctype="multipart/form-data" method="post" > 
  2.   <input type="file" name="uploadify" id="uploadify" multiple="true" /> 
  3. </form> 
  4. <script type="text/javascript"
  5.   <?php $timestamp = time();?> 
  6.   var maxSize = 1024 * 1024*1024;//1G 
  7.   $(function() { 
  8.     $('#uploadify').uploadify({ 
  9.       'debug'  : false, 
  10.       <span style="white-space:pre">   </span> 'fileSizeLimit ': maxSize, 
  11.       'formData'   : { 
  12.         'timestamp' : '<?php echo $timestamp;?>'
  13.         'token'   : '<?php echo md5('unique_salt' . $timestamp);?>'
  14.         <span style="white-space:pre">    </span>'version_id'"{$version_id}" 
  15.       }, 
  16.       'swf'   : '/public/plug-ins/uploadify/uploadify.swf'
  17.       <span style="white-space:pre">    </span>'cancelImg':'/public/plug-ins/uploadify/uploadify-cancel.png'
  18.       'uploader' : '{:url("Package/upload")}'
  19.       <span style="white-space:pre">    </span>'fileTypeDesc'  : 'zip文件'
  20.       <span style="white-space:pre">    </span>'fileTypeExts' : '*.zip'
  21.       <span style="white-space:pre">   </span> 'multi': false 
  22.     }); 
  23.   }); 
  24. </script> 

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

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

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

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

  1. public function upload(){ 
  2.   $verifyToken = md5('unique_salt' . $_POST['timestamp']); 
  3.   if (!emptyempty($_FILES) && $_POST['token'] == $verifyToken) { 
  4.   $tempFile = $_FILES['Filedata']['tmp_name']; 
  5.     /* 
  6.     $targetFolder = '/public/uploads'; // Relative to the root 
  7.   $targetPath = $_SERVER['DOCUMENT_ROOT'] . $targetFolder; 
  8.   $targetFile = rtrim($targetPath,'/') . '/' . $_FILES['Filedata']['name']; 
  9.   // Validate the file type 
  10.   $fileTypes = array('jpg','jpeg','gif','png','zip'); // File extensions 
  11.   $fileParts = pathinfo($_FILES['Filedata']['name']); 
  12.   if (in_array($fileParts['extension'],$fileTypes)) { 
  13.     move_uploaded_file($tempFile,$targetFile); 
  14.     echo '1'; 
  15.   } else { 
  16.     echo 'Invalid file type.'; 
  17.   }*/ 
  18.     $version = model("Version")->retrieve_by_version($_POST['version_id']); 
  19.     if($version){ 
  20.       $file = new File($tempFile,'rw'); 
  21.       $hash_code = $file->hash(); 
  22.       $time = date("Y-m-d-i-s",$_POST['timestamp']); 
  23.       $info = $file->move(ROOT_PATH . 'public' . DS . 'uploads'.DS.$version['project_name'].DS.$version['version_name'],'update_'.$time.'.zip'); 
  24.       if($info){ 
  25.         // 成功上传后 获取上传信息 
  26.         echo $info->getExtension(); 
  27.         echo $info->getSaveName(); 
  28.         echo $info->getFilename(); 
  29.       }else
  30.         // 上传失败获取错误信息 
  31.         echo $file->getError(); 
  32.       } 
  33.     }else
  34.       echo '找不到对应版本'
  35.     } 
  36.   } 
  37. }

Tags: Thinkphp5+uploadify

分享到: