译者的话:这是站长的第三个翻译作品了。闲话不多说了,总之就是为了方便大家使用,共同学习。

站长翻译这些技术文档,并不是站长的外语水平有多高,而是水平高的人不愿意翻译罢了。事实上,那些已经有牛人翻译了的资料,站长肯定也是不会或者没有能力翻译的。

由于时间仓促,水平有限。文中难免有错误疏漏之处,还请读者不吝斧正。联系邮箱:15624575@qq.com。

如果觉得站长的工作确实对您有帮助,请支持、帮助推广​​第一php网​​。

帮助文档

Uploadify是一个易集成的多文件上传解决方案,在手册翻译时,最新的稳定版本是2.1.4,3.0版目前还在测试中。作为一个jQuery插件,Uploadify不仅使用简单而且可定制性非常强。

尽管成功部署Uploadify可能需要掌握一定的jQuery知识,但是此帮助文档所提供的参考,应该足以帮助那些在使用Uploadify过程中遇到困难的人。如果你遇到了此文档无法为你解决的问题,可以访问​​Uploadify用户社区​​​来寻求帮助。 另外,我们还提供了一系列的​​常见问题 ​​,也有助于你顺利使用Uploadify。

部署

在部署一个Uploadify实例之前,必须确保满足最小需求:

  • jQuery 1.4.x or greater
  • swfObject 2.2 or greater
  • Flash Player 9.0.24 or greater

​下载最新的zip压缩包​​。将以下文件解压缩到你网站根目录的"uploadify"文件夹中。

  • cancel.png
  • jquery.uploadify.v2.1.4.min.js
  • jquery-1.4.2.min.js
  • swfobject.js
  • uploadify.css
  • uploadify.php
  • uploadify.swf

在你的网站根目录新建一个页面,然后将以下代码粘帖到HTML文档的HEAD部分:


Head Section



  1. <link href="/uploadify/uploadify.css" type="text/css" rel="stylesheet" />
  2. <script type="text/javascript" src="/uploadify/jquery-1.4.2.min.js"> </script>
  3. <script type="text/javascript" src="/uploadify/swfobject.js"> </script>
  4. <script type="text/javascript" src="/uploadify/jquery.uploadify.v2.1.4.min.js"> </script>
  5. <script type="text/javascript">
  6. $(document).ready(函数() {
  7.   $('#file_upload').uploadify({
  8.     'uploader'  : '/uploadify/uploadify.swf',
  9.     'script'    : '/uploadify/uploadify.php',
  10.     'cancelImg' : '/uploadify/cancel.png',
  11.     'folder'    : '/uploads',
  12.     'auto'      : true
  13.   });
  14. });
  15. </script>


*确保上传文件夹存在并且是可写的。

在页面的body部分,添加如下代码:


Body Section



  1. <input id="file_upload" name="file_upload" type="file" />


当页面被载入时,file域将被Uploadify文件上传组件自动替换。

注意事项

  • 我们强烈建议使用相对于网站根目录的路径(也就是以一个正斜杠'/'开始)。否则,Uploadify将使用相对于当前页面的路径。
  • 应用于Uploadify的每个元素必须拥有一个唯一的ID属性。你可以参考引用class的元素,但是每个元素必须拥有一个唯一的ID。

如果你想要对Uploadify进行更多的定制,可以使用下面的可选项。


可选项



(布尔型)

​auto​

当文件被添加到队列时,自动上传。



(字符串)

​buttonImg​

浏览按钮的背景图片路径。



(字符串)

​buttonText​

默认在按钮上显示的文本。



(字符串)

​cancelImg​

取消按钮的背景图片路径。



(字符串)

​checkScript​

用以检查服务器上已存在文件的后台脚本的路径。【译者注:应该是ajax方式】



(字符串)

​displayData​

在上传过程中显示在队列里的数据类型。



(字符串)

​expressInstall​

expressInstall.swf文件的路径。



(字符串)

​fileDataName​

后台脚本中要处理的file域的名称。【译者注:就是type为file的input的name值】



(字符串)

​fileDesc​

在浏览窗口底部的文件类型下拉菜单中显示的文本。



(字符串)

​fileExt​

允许上传的文件后缀。【译者注:.jpg/.png等】



(字符串)

​folder​

上传文件夹的路径,文件上传后将被保存于此。



(整型)

​height​

浏览按钮的高度。



(布尔型)

​hideButton​

设置为true将隐藏flash按钮,这样你就可以为下面的div元素定义样式。



(字符串)

​method​

向后台脚本放送数据的表单方法。



(布尔型)

​multi​

设置为true将允许多文件上传。



(字符串)

​queueID​

页面中,你想要用来作为文件队列的元素的id。



(整型)

​queueSizeLimit​

上传队列中所允许的文件数量。



(布尔型)

​removeCompleted​

设置为true将自动移除队列中已经完成上传的项目。



(布尔型)

​rollover​

设置为true将激活浏览按钮的鼠标划过状态。



(字符串)

​script​

处理文件上传的后台脚本的路径。



(字符串)

​scriptAccess​

设置在主swf文件中的脚本访问模式。



(JSON object with mixed types)

​scriptData​

在文件上传时,应该被发送给后台脚本的一个包含name/value键值对以及一些额外信息的json对象。



(整型)

​simUploadLimit​

允许同时上传的文件数量。



(整型)

​sizeLimit​

上传文件的大小限制,单位为字节。



(字符串)

​uploader​

uploadify.swf文件的路径。



(整型)

​width​

浏览按钮的宽度。



(字符串)

​wmode​

flash文件的wmode。


事件



(函数)

​onAllComplete​

当上传队列中的所有文件都完成上传时触发。



(函数)

​onCancel​

当从上传队列每移除一个文件时触发一次。



(函数)

​onCheck​

在上传开始之前,如果检测到一个同名文件时触发。



(函数)

​onClearQueue​

当uploadifyClearQueue()方法被调用时触发。



(函数)

​onComplete​

每完成一次文件上传时触发一次。



(函数)

​onError​

当上传返回错误时触发。



(函数)

​onInit​

当Uploadify实例被载入时触发。



(函数)

​onOpen​

当上传队列中的一个文件开始上传时就触发一次。



(函数)

​onProgress​

在上传过程中触发。



(函数)

​onQueueFull​

当文件数量达到上传队列限制时触发。



(函数)

​onSelect​

每向上传队列添加一个文件时触发。



(函数)

​onSelectOnce​

每向上传队列添加一个或一组文件时触发。



(函数)

​onSWFReady​

当flash文件载入完成时触发。


方法



​.uploadify()​

创建Uploadify上传组件的一个实例。



​.uploadifyCancel()​

从上传队列移除一个文件。如果文件正在上传,该方法将先取消上传,然后再将文件移除出上传队列。



​.uploadifyClearQueue()​

将所有文件移除出上传队列,并且取消正在执行的所有上传。



​.uploadifySettings()​

改变Uploadify组件的可选参数。



​.uploadifyUpload()​

触发上传。


​http://www.phptogether.com/uploadifydoc/​


以下测试是基于V3.2.1版本

实例:index.php页面

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>文件上传实例测试</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
<script src="jquery.uploadify.min.js" type="text/javascript"></script>
<link rel="stylesheet" type="text/css" href="uploadify.css">
<style type="text/css">
body {
font: 13px Arial, Helvetica, Sans-serif;
}
</style>
</head>

<body>
<h1>Uploadify Demo</h1>
<form>
<div id="queue"></div>
<input id="file_upload" name="file_upload" type="file" multiple="true">
</form>

<script type="text/javascript">
<?php $timestamp = time();?>
$(function() {
$('#file_upload').uploadify({
'formData' : {
'timestamp' : '<?php echo $timestamp;?>',
'token' : '<?php echo md5('unique_salt' . $timestamp);?>'
},//需要传递到后台的数据
'swf' : 'uploadify.swf',//flash文件路径
'uploader' : 'uploadify.php',//后台处理文件
'buttonText':'请上传文件'//默认在按钮上显示的文本
'auto':false,//是否自动上传
'height':30,//按钮的高度
'width':120,//按钮的宽度
'onUploadSuccess' : function(file) {
alert('The file ' + file.name + ' finished processing.');
},//每个文件上传完成后执行的函数
'onQueueComplete' : function(queueData) {
alert(queueData.uploadsSuccessful + ' files were successfully uploaded.');
//全部上传完成后执行的回调函数
});
});
</script>
<p>
<a href="javascript:$('#file_upload').uploadify('cancel')">取消第一个文件</a> | <a href="javascript:$('#file_upload').uploadify('cancel', '*')">取消所有文件</a> | <a href="javascript:$('#file_upload').uploadify('upload', '*')">上传所有文件</a>
</p>
</body>
</html>






后台处理程序:uploadify.php



<?php
/*
Uploadify
Copyright (c) 2012 Reactive Apps, Ronnie Garcia
Released under the MIT License <http://www.opensource.org/licenses/mit-license.php>
*/

// Define a destination
$targetFolder = './uploads'; // Relative to the root

$verifyToken = md5('unique_salt' . $_POST['timestamp']);

if (!empty($_FILES) && $_POST['token'] == $verifyToken) {
$tempFile = $_FILES['Filedata']['tmp_name'];
$targetPath = dirname(__FILE__) . $targetFolder;
$targetFile = rtrim($targetPath,'/') . '/' . $_FILES['Filedata']['name'];

// Validate the file type
$fileTypes = array('jpg','jpeg','gif','png'); // 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.';
}
}
?>