0

我想开发一个后端管理解决方案,以使用一些多重上传 Flash 上传器保存帖子的图像。我的意思是那种上传器,当您单击浏览时,而不是在打开的对话框中,您可以使用 CTRL 加鼠标左键选择多个文件)。

我想将每个新图像保存到数据库中。保存我的意思是,为我的表中的每个项目(图像)创建一个新行,称为图像:

1.id (automatically increasing)
2.file_name
3.user_who_uploaded_that_book

我还想限制用户可以在配置文件中某处上传的文件数量(例如最多 20 个文件)。

4

2 回答 2

2

就我个人而言,我是Plupload的粉丝,其中包括一组很好的示例,说明如何为多个文件上传设置它。它还包括一个 upload.php 脚本,作为后端设置的示例。

HTML4 不支持多选文件,因此您需要依赖 HTML5 或扩展(如 flash 或 silverlight)。Plupload 支持上述所有功能,因此它应该为您节省一些跑腿工作。

于 2012-03-24T17:51:04.270 回答
0

我认为您在这里有两个基本问题:

  1. 如何选择本地文件通过 Flash 上传?
  2. 如何将多个文件作为 POST 发送到服务器?

对于#1,您需要使用flash.net.FileReference

对于#2 Flash 中没有内置的“Multipart”加载程序,我很确定这是您需要的。我发现的最好的是这位名叫 Eugene 的天才开发者:http ://blog.inspirit.ru/?p=198 。这很好用,虽然我个人对 IE8 和 IE9 中的 onComplete 处理程序有一些问题。我确定这是 IE 的错,而不是 Eugene 的错。我在监听 HTTPStatusEvent 事件时解决了这个问题,如下所示:

var ml:MultipartURLLoader = new MultipartURLLoader();           
ml.addEventListener(HTTPStatusEvent.HTTP_STATUS, onHTTPStatusEvent);
ml.addVariable('Content-Type', "image/png");
ml.addFile(pngStream, filename, "file", "image/png");
ml.load('http://...');
function onHTTPStatusEvent( event: HTTPStatusEvent ){           
    if(stat == 0 || (stat >= 200 && stat < 205)){
        //upload success
    }else{
        //some kinda error
    }
}

(这应该与多个 addFiles(_) 一起使用;)

我也在监听标准事件:

ml.addEventListener(Event.COMPLETE, uploadComplete);
ml.addEventListener(ProgressEvent.PROGRESS, uploadProgress);

但是根本无法让 PROGRESS 工作,并且 COMPLETE 不会在 IE 上触发......有人知道在 IE 上工作的任何替代方案吗?Eugene 的代码现在正在为我工​​作,但我不认为我可以添加一个“正在上传......”进度条......这会很酷。

于 2012-03-25T03:46:59.280 回答