Ajax 无刷新上传文件插件 uploadify 的使用
在表单中无法直接使用 Ajax 上传文件,解决的思路可以是使用插件无刷新地上传文件,返回文件上传后的地址,然后把该地址作为 Ajax 的参数传递给服务器端进行数据库处理。可以使用 uploadify 插件来实现该思路。
文档地址:http://www.uploadify.com/documentation/
插件有 Flash 版 和 HTML5 版,项目中用到的是 Flash 版。
下载 Demo 并解压:

其中 index.php :包含了 html ,并且调用了核心 js 库的接口;
jquery.uploadify.js :核心 js 库;
uploadify.php :处理上传,并且返回上传是否成功的状态值。
对官方 demo 稍作修改:
index.html 主要代码
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="__PUBLIC__/css/uploadify.css" type="text/css">
<script src="__PUBLIC__/js/Jquery-1.8.3.js.js"></script>
<script src="__PUBLIC__/js/jquery.uploadify.js" type="text/javascript"></script>
<script src="__PUBLIC__/js/upload.js" type="text/javascript"></script>
</head> <body>
<form id="upform">
<div id="queue"></div>
<input id="file_upload" name="file_upload" type="file" multiple="true">
</form>
</body>
</html>
upload.js 代码:
$(function(){
$timestamp = $("#timestamp").html();
$token = $("#token").html();
$swfurl = $("#swfurl").html();
$('#file_upload').uploadify({
'formData' : {
'timestamp' : $timestamp,
'token' : $token
},
'swf' : $swfurl,
'uploader' : 'uploadify.php',
'onUploadSuccess' : function(file, data, response) {
var dataObj = eval("(" + data + ")");
if(1 == dataObj.code){
$msg = '文件'+ file.name + '上传成功';
$("#msg").html($msg);
$("#filename").html(dataObj.filename);
}else if(2 == dataObj.code){
$msg = '文件上传失败,请上传小于2M的.dox、.docx、.pdf文件';
layer.msg($msg, 2, 3);
}else if(3 == dataObj.code){
$msg = '文件类型错误';
layer.msg($msg, 2, 3);
}else{
$msg = '上传失败,请上传小于2M的.dox、.docx、.pdf文件';
layer.msg($msg, 2, 3);
}
}
});
})
uploadify.php
<?php
$targetFolder = './Uploads/authorization';
$verifyToken = md5('unique_salt' . $_POST['timestamp']); if (!empty($_FILES) && $_POST['token'] == $verifyToken) {
$tempFile = $_FILES['Filedata']['tmp_name'];
$targetPath = $_SERVER['DOCUMENT_ROOT'] . $targetFolder; $fileTypes = array('doc','docx','pdf');
$fileParts = pathinfo($_FILES['Filedata']['name']); $filename = $_SESSION['member']['mid'].'-'.date('Ymd-His').'-'. mt_rand(0,1000).'.'.$fileParts['extension'];
$targetFile = rtrim($targetPath,'/') . '/' . $filename; if (in_array($fileParts['extension'],$fileTypes)) {
if(move_uploaded_file($tempFile,$targetFile)){
$arr['code']= 1;
}else{
//上传失败
$arr['code'] = 2;
$arr['file_name'] = '';
}
} else {
//文件类型错误
$arr['code'] = 3;
$arr['file_name'] = '';
}
}else{
$arr['code'] = 4;
$arr['file_name'] = '';
}
$arr['filename'] = $filename;
exit(json_encode($arr));
Ajax 无刷新上传文件插件 uploadify 的使用的更多相关文章
- ajax无刷新上传文件
网页上传文件最简单的方式就是通过表单上传了,但是在提交表单的时候会导致网页刷新,但有的时候我们不想网页刷新,有什么办法呢,我们可以使用ajax上传文件来做到这一点.只有ajax还不行,还需要JavaS ...
- jquery 的ajax无刷新上传文件之后,页面还是会莫名的刷新-----解决办法
文件上传用到全局数组: $_FILES 只需要把下面的 <button onclick="post()">提交</button> 改为 <input ...
- ajaxfileupload.js插件结合一般处理文件实现Ajax无刷新上传
先上几张图更直观展示一下要实现的功能.本功能主要通过Jquery ajaxfileupload.js插件结合ajaxUpFile.ashx一般应用程序处理文件实现Ajax无刷新上传功能,结合NPOI2 ...
- 文件无刷新上传(swfUpload与uploadify)
文件无刷新上传并获取保存到服务器端的路径 遇到上传文件的问题,结合之前用到过的swfUpload,又找了一个无刷新上传文件的jquery插件uploadify,写篇博客记录一下分别介绍这两个插件的实现 ...
- jquery ajax php 无刷新上传文件 带 遮罩 进度条 效果的哟
在很多项目中都会叫用户上传东西这些的,自从接触了jquery 和ajax之后就不管做什么,首先都会想到这个,我这个人呢?是比较重视客户体验的,这次我这边负责的是后台板块,然后就有一块是要求用户上传照片 ...
- ajax +jsp+iframe无刷新上传文件[转]
http://hi.baidu.com/zj360202/blog/item/f23e3711f929c774cb80c475.html ajax jsp 无刷新上传文件 2009-10-26 16: ...
- jQuery+php+ajax实现无刷新上传文件功能
jQuery+php+ajax实现无刷新上传文件功能,还带有上传进度条动画效果,支持图片.视频等大文件上传. js代码 <script type='text/javascript' src='j ...
- 移动端图片上传解决方案localResizeIMG先压缩后ajax无刷新上传
现在科技太发达,移动设备像素越来越高,随便一张照片2M+,但是要做移动端图片上传和pc上略有不同,移动端你不能去限制图片大小,让用户先处理图片再上传,这样不现实.所以理解的解决方案就是在上传先进行图片 ...
- web 开发之js---巧用iframe实现jsp无刷新上传文件
首先要说的就是 ajax 是无法实现上传文件的,可以想一下ajax与后台通信都是通过传递字符串,怎么能传递文件呢?其实出于安全考虑js是不能操作文件的,所以就不要再说用ajax来实现文件的上传了,这是 ...
随机推荐
- css3 -- 伪类与伪元素
伪类: 1.结构伪类 A:E : first-child{} E : nth-*(n){} E : first-*(even){} E : first-*(odd){} B:nth-child 是根 ...
- 线段树(区间合并) LA 3989 "Ray, Pass me the dishes!"
题目传送门 题意:动态最大连续子序列和,静态的题目 分析:nlogn的归并思想.线段树维护结点的三个信息,最大前缀和,最大后缀和,该区间的最大和的两个端点,然后答案是三个的better.书上用pair ...
- C#Excel的导入与导出
1.整个Excel表格叫做工作表:WorkBook(工作薄),包含的叫页(工作表):Sheet:行:Row:单元格Cell. 2.NPOI是POI的C#版本,NPOI的行和列的index都是从0开始 ...
- soapui中文操作手册(三)----使用SoapUI进行负载测试
使用了SoapUI进行负载测试 负载测试是相当独特的,我们已经创建了一个功能,使您能够快速创建性能测试,并很容易地修改它们.SoapUI性能测试通常是从现有功能测试创建.这使您可以非常快速地创建先进的 ...
- Java 集合系列08之 List总结(LinkedList, ArrayList等使用场景和性能分析)
概要 前面,我们学完了List的全部内容(ArrayList, LinkedList, Vector, Stack). Java 集合系列03之 ArrayList详细介绍(源码解析)和使用示例 Ja ...
- 建立php开发环境(XAMPP + Xdebug+Zend Studio)
1. 安装XAMPP和Zend Studio Zend Studio下载地址: http://pan.baidu.com/s/1o6BjvAE XAMPP 下载地址: http://pan.baidu ...
- android pcm
Android.media package里包含声音录放的两个类AudioRecord和AudioTrack.前者用来录制,后者用来播放. 配置 pcm: int channel = AudioFor ...
- [Cocos2d-x For WP8]ActionManager动作管理
在Cocos2d-x里面可以通过CCActionManger类来管理动作的暂停和恢复,CCActionMessage是管理所有Action的单例,一般情况下并不直接使用这个单例,而是使用CCNode的 ...
- 2分钟 windows下sublime text 3安装git插件:
12:35 2015/11/182分钟 windows下sublime text 3安装git插件:推荐博客:http://blog.csdn.net/naola2001/article/detail ...
- js,html,css注释大集合
1.js注释: 单行注释,在注释内容前加符号 “//” <script type="text/javascript"> document.write("单行注 ...