sae storage 使用uploadify插件进行文件批量上传
uploadify插件在文件上传方面还是很不错的,这不我需要往sae 的storage上上传文件,就用了它。
下面我就分享一下如何实现的吧。
我们先到官网下载最新的uploadify最新的插件包。
在页面中引用以下必须js/css文件,注意uploadify是基于Jquery的所以必须在之前引用一下Jquery包。
<link rel='stylesheet' href='../script/uploadify/uploadify.css?v=2' type='text/css' />
<script type="text/javascript" src="../script/uploadify/jquery.min.js"></script>
<script type="text/javascript" src="../script/uploadify/jquery.uploadify.min.js"></script>
页面中定义上传的容器
<div id="file_upload"></div>
然后创建上传插件
$('#file_upload').uploadify({
'onSelect' : function(file){
},
'formData': {
'token':'<?php echo $token; ?>', //token
'userid':'<?php echo $current_user->ID; ?>',
'email':'<?php echo $current_user->user_email; ?>'
},
'removeCompleted':false,
'buttonText' : '选择文件',
'swf' : '../script/uploadify/uploadify.swf',
'uploader' : 'http://codeo.cn/wp-content/themes/xiu-new/pages/co_upload.php',
'method' : 'POST',
'fileObjName':'imgFile',
'queueID':'queue',
'fileSizeLimit':'200k',
'onUploadSuccess' : function(file, data, response) {
data=eval("("+data+")");
if(data.s){
$("#"+file.id).find(".data").html("-完成");
var cancel=$('#'+file.id).find(".cancel a");
if (cancel) {
cancel.attr("rel", data);
cancel.click(function () {
//删除文件及数据
});
}
}else{
$("#"+file.id).find(".data").html("失败:"+data.m);
}
},
'onCancel':function(file){
}
,'overrideEvents': ['onSelectError', 'onDialogClose'],
//返回一个错误,选择文件的时候触发
'onSelectError': function (file, errorCode, errorMsg) {
switch (errorCode) {
case -100:
alert("上传的文件数量已经超出系统限制的" + $('#file_upload').uploadify('settings', 'queueSizeLimit') + "个文件!");
break;
case -110:
alert("文件 [" + file.name + "] 大小超出系统限制的" + $('#file_upload').uploadify('settings', 'fileSizeLimit') + "大小!");
break;
case -120:
alert("文件 [" + file.name + "] 大小异常!");
break;
case -130:
alert("文件 [" + file.name + "] 类型不正确!");
break;
}
return true;
},
//检测FLASH失败调用
'onFallback': function () {
alert("您未安装FLASH控件,无法上传图片!请安装FLASH控件后再试。");
}
});
介绍一下uploadify相关参数
- formData:可以填写要传递的参数,以供后台使用;
- uploader:后台处理文件
- overrideEvents:重写事件,以便于自定义提示
- onSelectError:错误提示重写
- onUploadSuccess:每个文件成功后执行的事件,在这里我们可以绑定uploadify的取消按钮的点击事件,实现uploadify的真删除
sae 后台是如何接收uploadify参数进行处理
<?php
//允许的文件后缀
$fileTypes = array('jpg','jpeg','gif','png');
if (!empty($_FILES)) {
//得到上传的临时文件流
$tempFile = $_FILES['imgFile']['tmp_name'];
//得到文件原名
$fileName = $_FILES["imgFile"]["name"];//iconv("UTF-8","GB2312",$_FILES["imgFile"]["name"]); $fileName=strFilter($fileName);
//扩展名
$temp_arr = explode(".", $fileName);
$file_ext = array_pop($temp_arr);
$file_ext = trim($file_ext);
$file_ext = strtolower($file_ext); if (in_array($file_ext, $fileTypes) === false) {
echo "2";
exit;
}
//传值 本次唯一id
$tank=$_POST['token'];
$userid=$_POST['userid'];
$email=$_POST['email']; $file_dir=date("Y/m/d").'/'; $storage = new SaeStorage();
$domain = 'codeku';
$destFileName = $file_dir.create_guid().'_'.$fileName;
$srcFileName = $tempFile;
//$attr = array('encoding'=>'gzip');
$result = $storage->upload($domain,$destFileName, $srcFileName);
if(!$result) {
echomsg('false','文件上传失败!');
exit;
}
if($result){
//也可以插入数据库等操作
}
echomsg('true','操作成功!'.$destFileName.$fileName);
}
?>
sae 保存文件核心方法是
$result = $storage->upload($domain,$destFileName, $srcFileName);
接收uploadifyformDatapost数据方式$_POST['token'];。
sae storage 使用uploadify插件进行文件批量上传的更多相关文章
- JQUery利用Uploadify插件实现文件异步上传(十一)
一:简介: Uploadify是JQuery的一个上传插件,实现的效果非常好,带进度显示 ,且Ajax异步,能一次性上传多个文件,功能强大,使用简单 1.支持单文件或多文件上传,可控制并发上传的文件数 ...
- jquery的uploadify插件实现的批量上传V3.2.1版
你需要如下配置(包括引入文件)HTML: <html xmlns="http://www.w3.org/1999/xhtml"> <head runat=&quo ...
- 带进度条的文件批量上传插件uploadify
有时项目中需要一个文件批量上传功能时,个人认为uploadify是快速简便的解决方案. 先上效果图: 一. 下载uploadify 从官网下载uploadify的Flash版本(Flash版本免费,另 ...
- 利用uploadify+asp.net 实现大文件批量上传。
前言 现在网上文件上传组件随便一搜都是一大堆,不过看大家一般都在用uploadify这个来上传文件.由于项目需要,我在来试了一下.因为第一次使用,也遇到了很多问题,特此记录! ------------ ...
- jquery文件批量上传控件Uploadify3.2(java springMVC)
人比較懒 有用为主 不怎么排版了 先放上Uploadify的官网链接:http://www.uploadify.com/ -->里面能够看到PHP的演示样例,属性说明,以及控件下载地址.分f ...
- 文件批量上传的工具,要实现暂停继续、断点续传等功能(使用QtNetwork和QHttpMultiPart,和定时器检查超时)
最近在做一个文件批量上传的工具,要实现暂停继续.断点续传等功能.利用Qt自带的QtNetwork模块,完成这些需求并没有费多少周章,主要思路就是将文件分块,然后用while循环依次传输.具体实现代码比 ...
- 文件批量上传-统一附件管理器-在线预览文件(有互联网和没有两种)--SNF快速开发平台3.0
实际上在SNF里使用附件管理是非常简单的事情,一句代码就可以搞定.但我也要在这里记录一下统一附件管理器能满足的需求. 通用的附件管理,不要重复开发,调用尽量简洁. 批量文件上传,并对每个文件大小限制, ...
- 使用WebUploader实现文件批量上传,进度条显示功能
知识点:利用WebUploader,实现文件批量上传,并且实时显示文件的上传进度 参考官方文档:http://fex.baidu.com/webuploader/ (1)引入三个资源 JS,CSS,S ...
- SpringMVC+Ajax实现文件批量上传和下载功能实例代码
需求: 文件批量上传,支持断点续传. 文件批量下载,支持断点续传. 使用JS能够实现批量下载,能够提供接口从指定url中下载文件并保存在本地指定路径中. 服务器不需要打包. 支持大文件断点下载.比如下 ...
随机推荐
- ASP.NET菜鸟之路之Response小例子
背景 我是一个ASP.NET菜鸟,暂时开始学习ASP.NET,在此记录下我个人敲的代码,没有多少参考价值,请看到的盆友们为我点个赞支持我一下,多谢了. Response.Write Redirect ...
- React 点击删除列表中对应项(React 获取DOM中自定义属性)
点击删除按钮,删除列表中对应项本来是React比较基础的应用,可是应用情况变得复杂了以后,我还真想了一会儿才搞定. 简化一下应用场景:点击新增按钮,增加一条输入框,点击输入框旁边的按钮,删除该输入框( ...
- IIS7、IIS6 web.config注册HttpModule
IIS6注册HttpModule <system.web> <httpModules> <add name="..." type= ...
- php 5.2 版本isset()方法小坑
PHP 5.2.17p1 (cli) (built: May 28 2015 16:15:30)Copyright (c) 1997-2010 The PHP GroupZend Engine v2. ...
- Python几种创建list的方法的效率对比
我们用 生成一个0到((1万倍n)-1)的list做例子 首先这种方式复杂度为平方级 ''' def test1(n): lst = [] for i in range(n*10000): lst = ...
- C语言的算法--------二分法查找
int find(int n,int a[],int l){int low=0;int high=l-1;int middle=0;while(low<high){middle=(low+hig ...
- Xcode export/upload error: Your session has expired. Please log in-b
1.Xcode export/upload error: Your session has expired. Please log in 我在stack over flow上找到的答案: 一看pre ...
- openssl 进行证书格式的转换
各类证书由于存储的内容不同(如是否包含公钥/私钥是否加密存储/单一证书或多证书等).采用编码不同(DER/BASE64).标准不同(如PEM/PKCS),所以尽管X.509标准规定了证书内容规范,但证 ...
- js方法在iframe父子窗口
http://developer.51cto.com/art/201009/228891.htm http://developer.51cto.com/art/201009/228891.htm ht ...
- handler.post(r)同一个线程的疑惑
handler.post(r);是把r加到消息队列,但并未开辟新线程.等到消息被取出时才执行. package com.lei.handlethread; import android.os.Bund ...