uploadify php实例,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的写法

var maxSize = 1024 * 1024*1024;//1G

$(function() {

$('#uploadify').uploadify({

'debug' : false,

'fileSizeLimit ': maxSize,

'formData' : {

'timestamp' : '<?php echo $timestamp;?>',

'token' : '<?php echo md5('unique_salt' . $timestamp);?>',

'version_id': "{$version_id}"

},

'swf' : '/public/plug-ins/uploadify/uploadify.swf',

'cancelImg':'/public/plug-ins/uploadify/uploadify-cancel.png',

'uploader' : '{:url("Package/upload")}',

'fileTypeDesc' : 'zip文件',

'fileTypeExts' : '*.zip',

'multi': false

});

});

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程序设计有所帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值