使用 Flash Action Script 2 的批量上传器或使用 Flash 的多文件上传
该批量上传器使用 Action Script 2 开发,并使用 PHP 作为后端处理文件上传。
引言
该批量上传器使用 Action Script 2 开发,并使用 PHP 作为后端处理文件上传。当前用户 ID 可以通过定义一个名为“userid
”的 FlashVars
变量传递给 Flash 模块,该变量将在请求相册或处理上传时传递给 PHP 函数。
背景
很久以前,我为大型在线照片分享网站开发了一个 Flash 批量上传工具。该工具的目的是允许网站用户将照片从他们的计算机上传到他们的在线帐户。这个包含完整源代码的 Flash 工具在这里免费提供。
许多可用的批量处理工具在长时间处理时会出错,并且浏览器会尝试通过向用户显示警告警报来中止脚本。我成功解决了这个问题。
使用代码
以下是如何使用 FlashVars
从 HTML 向 Flash 传递变量的示例
//Object Tag Example:
<PARAM NAME=FlashVars VALUE="userid=10">
//Embed Tag Example:
<EMBED href="display.swf" FlashVars="userid=10"></EMBED>
该应用程序最初通过调用一个 PHP 脚本来请求用户创建的相册,该脚本以 XML 格式返回相册列表及其 ID。
请参阅第 86 行的代码。
var albumListURL =
(_root.albumUrl)?_root.albumUrl:"http://yourwebsite.com/albumList.php";
albumList.php 应以 XML 格式返回相册列表,如下所示
<?xml version="1.0" encoding="utf-8"?>
<albums>
<album><id>1</id><name>My Little Baby</name></album>
<album><id>2</id><name>Wedding Photos</name></album>
</albums>
该工具还允许用户直接从上传器界面创建新相册。打开舞台上的“albumpop_mc”电影剪辑以查看相册创建功能。
批量上传工具逐个将选定的文件发送到服务器。uploadItem
(第 172 行)是将文件发送到服务器 PHP 脚本的函数。
if (!itemRef.upload("http://yourwebsite.com/batchUploadProcess.php&album="+
albumHash+"&user="+_root.userId)) {
errorList.push("Failed to upload : "+item.name);}
此代码一次发送一个文件到名为“batchUploadProcess.php”的 PHP 脚本,该脚本在服务器上接收文件并在数据库中添加记录。用户从列表中选择的相册的 ID 以及应用程序作为 FlashVars
变量提供的用户 ID 会发送到 PHP 脚本。
以下是我用来处理从 Flash 发送的文件所使用的脚本
<?xml version="1.0" encoding="utf-8"?>
<albums>
<album><id>1</id><name>My Little Baby</name></album>
<album><id>2</id><name>Wedding Photos</name></album>
</albums>
switch($_FILES['Filedata']['error']) {
case 1:
case 2:
case 3:
case 6: die; break;
case 4:
case 0: break;
default: die; break;
}
if ($_FILES['Filedata']['error'] == 0) {
$fileInfo['photo'] = getimagesize($_FILES['Filedata']['tmp_name']);
if ($fileInfo['photo'][2] != 2) die;
}
move_uploaded_file($_FILES['Filedata']['tmp_name'],
"./photos/originals/YourFileName.jpg");
//Add your other codes here
echo "success";
点击下面的链接以 CS3 格式下载最新的源代码文件
如果您是中级 Flash 程序员,您可以轻松理解代码流程。随心所欲地修改和使用代码。我不想在这里解释完整的代码。但是,如果您有任何问题,可以联系我。