对于图片的上传,如果不基于插件的话,那样显的有点难看,而uploadify这款插件可以看到上传的进度条,以及上传完毕后的触发动作,还支持多图上传,以及使用队列方式。我觉得还是挺好用的,
案例下载地址(图片Jquery异步上传插件)。
其中前端引入jquery.uploadify.min.js后,导致浏览器会崩溃,则在引入时带一个变动的参数如jquery.uploadify.min.js?v= ,
那么前端js的主要js部分简化后如下:
$("#upload_picture").uploadify({
"height" : 30,
"swf" : "./uploadify.swf",
"fileObjName" : "upload_file", //上传按钮的name值
"buttonText" : "上传图片",
"uploader" : "http://localhost/upload/upload.php", //提交给服务器处理的php
"width" : 120,
'removeTimeout' : 1,
'fileTypeExts' : '*.jpg; *.png; *.gif;',
"onUploadSuccess" : uploadPicture, //上传成功后触发的事件
'onFallback' : function() {
alert('未检测到兼容版本的Flash.');
}
});
function uploadPicture(file, data){
//这里的事件,我一般会把图片预览在页面上
}
而服务器端接收图片后,对图片做处理,也就是对图片操作咯,简单的判断文件大小,文件重命名,移动文件到指定目录下等,如下:
$targetFolder = 'uploads/';
$verifyToken = md5('unique_salt' . $_POST['timestamp']);
//if (!empty($_FILES) && $_POST['token'] == $verifyToken) {
$tempFile = $_FILES['Filedata']['tmp_name'];
$fileTypes = array('jpg','jpeg','gif','png'); // File extensions
$fileParts = pathinfo($_FILES['Filedata']['name']);
$targetFile = date('YmdHis',time()).uniqid().'.'.$fileParts['extension'];
if (in_array(strtolower($fileParts['extension']),$fileTypes)) {
if(move_uploaded_file($tempFile,$targetFolder.$targetFile)){
echo $targetFile;
}else{
echo '上传失败';
}
} else {
echo '扩展名无效';
}
//}
然而,一般现在都有很多第三方平台,图片存在自己的服务器上反而占用空间,我们可以考虑存在第三方上还可以实现DNS加速,下次整理一个图片存到七牛上的应用。
原文链接:图片Jquery异步上传插件,转发请注明来源!