`
daogangtang
  • 浏览: 62655 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Bamboo对Upload的支持

 
阅读更多
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中有如下字段:

  1. x-requested-with  标明这是一个ajax请求
  2. x-file-name   上传的文件名放在这里面(这个需要与客户端js代码配合实现。是不是从query参数中获得此值更好,值得商榷)


enjoy.
分享到:
评论

相关推荐

    持续集成bamboo

    4. **部署自动化**:Bamboo支持多种部署策略,包括蓝绿部署、滚动更新等,确保应用程序可以平稳地部署到生产环境。 5. **实时反馈**:Bamboo提供实时构建状态和详细的构建报告,便于快速定位问题。 6. **插件生态*...

    PyPI 官网下载 | bamboo-pipeline-3.6.3.tar.gz

    标题中的"PyPI 官网下载 | bamboo-pipeline-3.6.3.tar.gz"指出这...为了充分利用这个库,开发者需要对Python编程和持续集成概念有一定的理解,同时也要学会阅读和理解Python库的文档,以便正确地配置和使用其中的功能。

    bamboo CTL-660 驱动 中文官方版

    Bamboo系列产品Windows驱动PenTablet_5.3.3-2 版本号:5.3.3-2 适应操作系统:Windows XP, Windows Vista, Windows 7, Windows 8 发布日期:2013/12/18 ... 改进对Winodws 8.1的支持 其他改进和错误修复

    bamboo数位板驱动

    bamboo数位板驱动

    Bamboo Paper安卓apk

    透过 Bamboo Paper,笔记本在 Windows 8,Android 与 iOS 平台上可以和朋友同事分享,或汇出到各式云端服务及社交媒体 5.触控笔 为求最佳效果及体验,使用 Bamboo Paper 时请搭配 Wacom 触控笔使用。请上 bambo

    bamboo Tinypng的软件工具

    【标题】:“Bamboo Tinypng:高效图片压缩软件工具” 在数字图像处理领域,文件大小往往成为存储和传输的一大挑战,特别是对于PNG和JPEG这类常用的图片格式。"Bamboo Tinypng"是一款针对这个问题的专业解决方案,...

    HAproxy自动配置Bamboo.zip

    Bamboo 是一个 Web 守护进程可自动的配置 HAproxy 用于发布在 Apache Mesos 和 Marathon 的 Web 服务。界面:StatsD Monitoring 标签:Bamboo

    BAMBOO-2-7-PDF.pdf

    Bamboo 2.7版本在原有基础上进行了功能优化与增强,本章节将对Bamboo的基础概念、安装配置及基本操作进行概述,帮助初学者快速上手。 #### 用户指南:全面掌握Bamboo操作 ##### 开始使用:熟悉Bamboo仪表板 - **...

    bamboo_eex:EEx对Bamboo的模板支持

    使用Bamboo.EEx将EEx模板支持添加到Bamboo。 安装 def deps do [ { :bamboo_eex , " ~> 0.1.0 " } ] end 例子 defmodule MyApp . Email do use Bamboo . EEx , path: " lib/my_app/views " def text_and_...

    bamboo 470 mac版驱动

    bamboo 470 mac版驱动 适合mac的bamboo 470 mac版驱动,解决画笔卡顿的问题

    bamboo cth661驱动

    bamboo cth661的驱动 装上驱动后有压感

    swift-Bamboo用一行代码实现自动布局和手动布局

    Bamboo不仅支持自动布局,还允许开发者进行手动布局。手动布局通常涉及设置视图的frame,例如,以下代码将视图移动到父视图的中心: ```swift view.bamboo.centerInSuperview() ``` `centerInSuperview()`方法会...

    bamboo-payment-icons.sketch

    icons,bamboo-payment,icons 一些支付相关的icon,

    bamboo_crack

    安装官方包,并申请到试用License之后,停止bamboo服务,将文件复制到atlassian/bamboo/atlassian-bamboo/WEB-INF/lib 覆盖同名文件,然后重启bamboo.仅供学习使用, 商业使用请购买授权

    Bamboo

    GIF文件支持动画,所以这个文件也可能是动态的,展示字体在不同文字或排版效果下的样子。 2. **Bamboo.TTF** - 这是TrueType字体文件,用户可以通过将这个文件复制到系统字体目录来安装这款字体。TrueType是一种...

    Bamboo Package.unitypackage

    Asset Store中付费竹子模型,价值27刀,需要的各位可以下载 https://assetstore.unity.com/packages/3d/vegetation/speedtree/bamboo-package-32273

    Python库 | bamboo_ipa_sync-3.0.0-py2.py3-none-any.whl

    《Python库:bamboo_ipa_sync-3.0.0-py2.py3-none-any.whl详解》 在Python的世界里,库是开发者们的重要工具,它们提供了丰富的功能,简化了编程过程。本文将深入探讨名为“bamboo_ipa_sync”的Python库,以及其在...

    bamboo dock

    banboo 绘图仪 数位板 手绘板

    bamboo:Atlassian Bamboo厨师食谱

    配方“ bamboo :: default”,“安装了Bamboo服务器,并具有可选的备份并记录到graylog。” 配方“ bamboo :: server”,“仅安装Bamboo服务器”。 配方“ bamboo :: database”,“仅安装Bamboo数据库”。 配方...

    Bamboo_smtp:Bamboo的SMTP适配器

    Bamboo_smtp支持这些安全选项,可以通过配置文件开启。此外,SMTP服务器可能需要用户名和密码进行身份验证,这也在Bamboo_smtp的配置中设置。 **故障排查和日志** 如果遇到邮件发送问题,可以查看日志以获取更多...

Global site tag (gtag.js) - Google Analytics