Bamboo Web框架对上传提供了方便的接口。目前支持的特性如下:
- 它同时支持html4和html5上传,且用统一接口处理;
- 同时支持单文件和多文件上传;
- 目前仅支持小于指定值(在mongrel2的配置文件中设定)的文件的上传,且是放在内存中一次性处理(后面视需求考虑支持大文件上传,大文件上传在mongrel2中已有很好的支持);
- 上传的文件会直接存储在磁盘上,同时会在数据库中有一份对应的记录;
Bamboo定义了一个基本的Upload模型,这个模型有如下字段:
- name 文件名字
- path 文件在服务器资源目录下的完整路径
- size 文件的大小,按字节计算
- timestamp 文件上传(创建)的时间
- desc 文件的描述
使用方式如下:
如:
local Upload = require 'bamboo.models.upload'
local newfile, result_type = Upload:process(web, req, 'logo/')
执行了这个之后,如果是单文件上传,则newfile就是创建的上传对象,里面的name, path, size, timestamp已经填充好了,desc还是'',result_type为'single';
如果是多文件上传(仅限html4,html5执行的总是单文件上传),则new_file是一个upload list,result_type是'multiple'。
获得了文件对象后,如果需要对其添加更多的信息,只需如下操作:
如:
newfile.desc = 'this is a picture.'
newfile:save()
即可。
Upload模型还可以被继承,比如,Bamboo定义了一个Image模型,就是继承自Upload,在其之上添加了width, height两个字段。要上传一个Image,并保存,只需:
如:
local Image = require 'bamboo.models.image'
local newimg, result_type = Image:process(web, req, 'logo/')
newimg.width = xxx;
newimg.height = yyy;
newimg.desc = 'zzzzzz';
newimg:save() -- 别忘了执行最后的save方法
可以看到,process函数,只负责保存文件和在数据库中生成基本记录的作用,更多的信息(不管是desc字段,还是由于继承添加的更多字段),都是在返回的file object基础上操作的。
下面给出process接口的完整参数:
newfile, result_type = Upload:process(web, req, dest_dir, prefix, postfix)
web: web对象,必须;
req:req对象,必须;
dest_dir:保存的路径,可选;
prefix:文件的前缀,可选;
postfix:文件的后缀,可选。
Upload对html5上传的数据有一定要求,要求req.headers中有如下字段:
- x-requested-with 标明这是一个ajax请求
- x-file-name 上传的文件名放在这里面(这个需要与客户端js代码配合实现。是不是从query参数中获得此值更好,值得商榷)
enjoy.
分享到:
相关推荐
这个名为“西门子PLC例程-cn_images_upload_2004_10_17_220431.rar.zip”的压缩包文件,可能包含了与西门子PLC相关的程序代码、工程示例或教程资料,时间追溯至2004年10月17日。由于标签为空,我们无法直接得知具体...
2. **文件类型限制**:系统可能具备了对上传文件类型的检查,只允许特定格式的文件上传,如图片、文档、视频等,以确保数据安全。 3. **文件大小限制**:为了防止大文件导致服务器压力过大,系统可能设定了上传文件...
无刷新上传通常依赖于JavaScript(可能包括AJAX技术)和服务器端的技术支持,如ASP.NET。 在这个源码中,可能使用了AJAXUpload组件,这是一个流行的JavaScript库,它利用AJAX技术实现了无刷新的文件上传。AJAX...
Lion.Web.UpLoadModule 解决了这个问题,它支持分块上传,允许用户以较小的块逐步上传大文件,提高了上传的稳定性和效率。 Lion.Web.UpLoadModule 的核心特性可能包括: 1. 分块上传:将大文件分割成多个小块进行...
在这个特定的资源中,我们关注的是ASP.NET实现的大文件上传功能,它不仅支持单个文件的上传,还支持多个文件的同时上传,并且在上传过程中带有进度条显示,提供了更好的用户体验。 在传统的HTTP协议中,文件上传...
此外,务必对用户上传的图片进行大小限制和格式检查,防止服务器被恶意攻击。 总结,XFire框架为Android开发者提供了一个强大且易于使用的工具,简化了图片上传和下载的流程。通过理解并熟练运用上述步骤,你可以...
若冰下载系统v1.1可能采用了MVC或Web API,因为它们更符合现代Web开发的原则,提供了更好的可测试性和RESTful服务支持,适合构建数据驱动的Web应用。 二、文件上传组件 在ASP.NET中,`HttpPostedFileBase`类是处理...