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的写法
- <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 (!emptyempty($_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 '找不到对应版本';
- }
- }
- }
Tags: Thinkphp5+uploadify
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)