今天做一个相册,关于图片批量上传的问题一直是个不大不小的问题,怎样才能使其速度快,用户体验又好呢,网上很少有这样的解决方案,今天琢磨出一个合理的解决方案,简单的介绍一下,供大家共同学习。
网上也不乏这类型的介绍,但是笔者个人觉得方案均不太好,要不是速度问题,要不是用户体验不好,有的是表单动态添加多个File框,实现多文件的上传,但是个人认为这样的用户体验极差,需要用户多次的选择。这时不得不用的方案就是Flash,通过Flash可以实现文件的批量选择,但是这时又产生一个问题,就是这些数据怎样提交到数据库呢,有人想的是循环插入,但是这样面临一个问题就是数据库频繁访问,当面对大量用户的时候简直就是灾难,所以此方法绝对不可行,下面是我的方案,合理的解决了以上两个尖锐问题。
首先,我是PHP+SWFUpload实现,SWFUpload是一个很不错的Flash图片上传插件,可以在文件选择对话框中能够进行文件多选,配合js实现页面无刷新的上传,可以实时显示上传进度,提供了丰富的上传进度事件回调。
此方案可以动态的显示上传的图片。关于SWFUpload的详细配置方法我会在稍后几天详细的整理出来,因此SWFUpload的配置就不在此赘述,SWFUpload官方只提供了简单的上传功能,大家可以使用自己的上传类,我是通过SWFUpload调用图片上传类然后返回图片的路径动态的生成表单,JS代码如下:
下面是效果图,界面还没有美化
然后点击保存图片,提交表单,下面就是如何一次性写入数据库的问题,下面是表单提交的数组。可以看到我给每个图片的path_和thum_加了一个编号,方便下面的工作。编号大家可以随意加,只要可以区分开就可以。
下面是我的php代码:
第一步是关键,运行后的效果,大家这时明白了编号的作用了吧!
下面第二步,去掉0那项,见下图:
最后第三步通过foreach遍历数组,生成插入语句,但是注意去掉最后的逗号!大功告成!
本文个人原创,转载请注明地址。