直接上传到s3的django rest框架接口

drf_to_s3的Python项目详细描述


drf-to-s3
==

`django rest framework<;http://django rest framework.org/>;``直接上传到s3的接口
。专为使用"Fine
Uploader<;http://fineUploader.com/>;``和API客户端的基于浏览器的客户端设计。


功能
--


>处理基于浏览器的上载
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

1。为"post
api<;http://docs.aws.amazon.com/amazons3/latest/dev/httppostforms.html;httppostconstructionpolicy>;` ` ` ` ` ` ` ` ` `api的旧浏览器(ie 9和android 2.3.x)的成功操作重定向,而使用动态生成的iframe。
3。提供上载完整回调的框架,该框架应
将文件复制到存储,并采取任何其他需要的操作,
例如创建模型对象。

请参阅此"Fine Uploader blog
post<;http://blog.fineUploader.com/2013/08/16/Fine-Uploader-s3-upload-di直接到amazon-s3-from-your-browser/>;`\br/>详细解释这些职责。


处理api客户端上载
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

库提供了一个适合非基于浏览器的api客户端上载的简化接口:

1。为"rest-put-object
api<;http://docs.aws.amazon.com/amazons3/latest/api/rest-objectput.html>;`\uuu.
2提供签名的uri。提供上载完整回调。

为此,它提出了两项建议:


1。将你的上传发送到一个"上传"桶,并将其设为私有。这简化了用于按用户隔离上载的命名空间,并且不鼓励读写acl。创建一个对您的
上载存储桶具有最低权限的帐户,并使用该帐户签署用户的策略文档。
3。在完成回调期间,使用私有或只读acl将文件移动到存储桶中。库提供了一个视图
和序列化程序,您可以对其进行子类化以轻松完成此任务。
4。使用fine uploader的
```objectproperties.key`<;http://docs.fineuloader.com/api/options-s3.html objectproperties.key>;`
属性将用户名作为前缀合并到密钥中。如果您还没有访问客户机中用户名的权限,可以使用库的中间件设置带有前缀的cookie。
5。配置fine
上载程序时,请确保指定"https"终结点url。设置一天过期策略,该策略将自动删除过期的、未完成的上载。这一步主要是为了省钱。

如果您想知道*为什么*,请参阅
security.md.


中的讨论如果您不想按设计使用它,可以使用实用程序类
和原始序列化程序创建自己的组件。

status
----


此项目是功能性的pre alpha项目。最重要的是,它需要更好的
文档。

rf_to_s3


这将安装其余依赖项:
`boto<;https://github.com/boto/boto>;`` uu,和
`querystring\'u parser<;https://github.com/bernii/querystring parser>;``uu
,后者处理'`uploadsuccess.params``中的嵌套键。

R/><Br/>1。在您的站点中包括"drf-to-s3.url"(如果您愿意,也可以是红色定义它们)。如果要在成功回调中使用嵌套字典,则必须禁用django rest framework重写http
方法和内容的选项。您可能没有使用这些选项,它们会干扰视图对自定义表单的使用
解析器<;https://github.com/tomchristie/django rest framework/issues/1346>;` ` ` ` ` `.




rest framework={
"表单方法覆盖":无,
"表单内容覆盖":无,
}


>3。为上传创建一个临时存储桶。
4.在那个桶上设置cors策略。
5.创建一个只有putobject访问该bucket的用户。
6.在你的前端添加好的上传程序。
7.配置精细上载程序:

-密钥
-``请求.密钥`
-访问密钥

目前不支持匿名上载。


不支持上载过程中的删除,但很容易添加。


参与
----

-问题跟踪程序:https://github.com/bodylabs/drf-to-s3/issues
-源代码:https://github.com/bodylabs/drf-to-s3

单元测试:
~.venv/bin/activate
rake install
rake test

针对s3的单元测试:
~~~~~~~~~~~~~~~~~~~~~~~~

1。如果您的系统上还没有安装它,请安装``foreman`。
您可以使用``gem install foreman``从rubygems获得它,或者安装
`heroku toolbelt<;https://toolbelt.heroku.com/>;``uuu.
2。创建一个用于测试的s3 bucket。
3.在项目根目录下创建一个`.env``文件,行如下:


-aws \-test \-bucket=…
-aws \-access \-key \-id=…
-aws \-secret \-access \-key=…

4。运行测试:




source venv/bin/activate
foreman运行drf_到s3/run tests/runtests.py


集成测试:
~~~~~~~~~~~~~~~~~~~~~~

1。安装``foreman``,创建一个s3 bucket,并按照上述方法设置`.env`
文件。

2。安装node、npm、fine uploader的生成依赖项,以及
chromium驱动程序:





>3。如果您不使用Mac OS/Homebrew,则需要以其他方式安装Chromium
驱动程序。


4。选择要测试的Fine Uploader版本:





>5。将其构建为"drf-to-us3/integration/static`:







6。运行测试

:::


rake集成

>在sauce实验室运行集成测试:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

1。创建一个"sauce labs"帐户。在.env中,设置"sauce"用户名和"sauce"访问密钥。
3。安装"sauce
connect<;http://saucelabs.com/downloads/sauce connect latest.zip>;`\启动酱连接:
Burman运行SH -C’Java- jar BR/> ~/代码/酱连接最新/酱连接。jar < BR/>:数学:"SueCu'UsReNo.'酱'Access \yKEY 'BR/>
5。运行测试:

with \庘sauce=1 rake integration

只有当您想
生成长描述完整的pypi包时,才需要这个。如果没有它,
你只会得到一个警告。

::


rake install_dist

如果你不使用macos/homebrew,你需要以其他方式安装pandoc。


许可证
----

这个项目是在mit许可证下授权的。

|构建状态图像::https://travis-ci.org/bodylabs/drf-to-s3.png?分支=主
:目标:https://travis-ci.org/bodylabs/drf-to-s3

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
在ElasticSearch中将SearchHit转换为Java对象   第三方库类的java重写XmlAdapter   java如何使用动画类获得平滑的动画效果?   Java PDFBox如果文本内容超过PDF的第一页,如何添加新页面?   Java二叉搜索树u根到最近叶的距离   java什么是diff Scanner和BufferedReader   java如何设计不生成并行数组的程序   java多次声明变量会降低执行速度吗?   java如何使用JXLAPI读取下拉列表的值   多线程为什么自定义阻塞队列在Java中不是线程安全的   java在一个变量中每输入1000个单位,就从另一个变量中减去1?   java Mapstruct通用映射器   Java中的类能否确定它是否已被修改?   java如何在MogoOperations聚合函数中定义输出类型?