将直接上传到s3添加到文件输入字段。

django-s3-upload的Python项目详细描述


django-s3-upload
==


compatibility
----



>此库现在仅限于python3和django1.11及更高版本。


从django直接将文件上载到s3[构建状态](https://travis-ci.org/yunojuno/django-s3upload.svg?branch=master)(https://travis ci.org/yunojuno/django-s3upload)


此项目允许通过django呈现的文件输入字段将文件从浏览器直接上载到aws s3。


避免了在上传到s3之前通过web服务器超时的问题。


功能包括:

*显示进度条
*支持acl(例如,私有上传)
*支持加密的静止s3存储桶
*mimetype和文件扩展名whitelisting
*按字段指定不同的存储桶目标

/>1。将iam用户的凭据添加到django设置中(请参见下文)
2。使用ec2实例配置文件及其附加的iam角色

无论您使用的是iam用户还是角色,都需要一个有效的iam策略
授予向s3上载的权限:

``json
"语句":[
{
"effect":"allow",
"action":["s3:putObject","s3:putobjectacl"],
"resource":"arn:aws:s3:::您的bucket name/*"
}
]
````


>如果要使用实例配置文件,IAM角色需要应用
信任关系配置:

``json
"statement":[
{
"effect":"allow",
"principal"{
"service":"ec2.amazonaws.com"
},
"action":"sts:assumerole"
}
]
````

注意,为了使用EC2实例配置文件,django-s3-upload需要
使用
[botocore][]包中的实用函数查询EC2实例元数据。如果"boto3"
是项目的依赖项,则已经安装了"botocore"。


\s3 cors

在s3存储桶上设置cors策略。

``xml
<;corsconfiguration>;
<;corsrule>;
<;allowedorigin>;http://yourdomain.com:8080<;/allowedorigin>;
<;allowedmethod>;post<;/allowedmethod>;
<;allowedmethod>;put<;/allowedmethod>;
<;maxageseconds>;3000<;/maxageseconds>;
<;allowedheader>;*<;/allowedheader>;
<;/corsrule>;
<;/corscoconfiguration&g
````




设置。py





```python
``python
``已安装的应用程序=[
……
‘s3upload’,
……
……









``````````` python
````````` python
=>

``````>


````````如果没有定义,则EC2安装使用NCE配置文件和IAM角色。
这要求您将BOTO3(或BOTOCORE,BOTO3的依赖项)
添加到项目依赖项中。
AWS访问密钥ID='
AWS访问密钥='


AWS存储桶名称='


http://docs.aws.amazon.com/general/latest/gr/rande.html s3_region
s3 upload_region='us-east-1'


/'=使用原始文件名上载到根目录。
2.。some/path'=使用原始文件名上载到some/path。
3。functionname=传递函数并创建自己的路径/文件名。
将acl函数授权给当前django用户是否可以执行此操作。
允许的[可选的]允许的mime类型列表。
acl[选择的]national]给对象另一个acl,而不是"public read"。
缓存控制[可选]缓存控制头,例如"max age=2592000"。
内容配置[可选]可用于将文件作为附件发送。
存储桶[可选]为此特定对象指定不同的存储桶。
#服务器端加密[可选]需要它的存储桶的加密头。

s3upload\u destinations={
"example\u destination":{
"required
"key":"uploads/images",

"optional
"auth":lambda u:u.is\u staff,\要上载的nybody
"允许的存储桶类型":["图像/jpeg"、"图像/png"、"视频/mp4"],默认允许所有mime类型
"允许的扩展名":(".jpg"、".jpeg"、".png"),默认为所有扩展名
"存储桶":"pdf存储桶",默认为"aws存储桶名称"
"acl':'private',默认为'public read'
'cache-control':'max age=2592000',默认无缓存控制
'content-disposition':'attachment',默认无内容处理
'content-length-range':(5000,2000000),默认允许任何大小的服务
'R端加密:aes256,默认不加密
}
>


````



网址url.py

``python
urlpatt模式=[
url(r'^s3upload/''url,include('s3upload.url'),
]
`````
>




run``````python manage.pycolcollecstatstatic`````````````````````````如有需要,则运行````````/>用于Django Admi




``python
表格.py

``python
来自django import forms
来自s3upload.widgets import s3upload widget

类s3upload form(forms.form):
images=forms.urlfield(widget=s3uploadwidget(dest='example\destination')
```

uuu*可选。您可以通过覆盖S3direct/templates/s3direct widget.tpl


35; te公司模板/表单。html


``html
<;html>;
<;head>;
<;meta charset="utf-8">;
<;title>;
<;meta charset="utf-8"<;meta charset="utf-8">;
{{{form.form.media}
<;head>;
<;body>;
><;br/><;form action=

<;form action=>;{%csrf%csrf;代币%%格式.as_p}<在examples文件夹中可以找到这两种方法的示例。运行它们:
`` shell
$git clone git@github.com:yunojuno/django-s3-upload.git
$cd django-s3-upload

gion='…'例如"eu-west-1"

$docker compose up
```

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

推荐PyPI第三方库


热门话题
多线程Java(Android)线程每隔一段时间重复任务,并访问值   算法生成添加到目标的所有数学表达式组合(Java作业/面试)   java XML:从SAX内容处理程序中的xsi:type属性查找命名空间uri   java打印字符类型不会产生任何结果   JavaWebLogic。jdbc。扩展。ConnectionAdSqlException:weblogic。常见的资源库。ResourceDeadException   父类的java JFace数据绑定绑定字段   java Javafx TableView始终为空   java如何使我的J2EE web应用程序脱机工作?   java当我使用Android Studio的意图时,没有弹出“包上下文”   java如何更新jar目录中的文件   Java中的新泛型<T>   使用gradle时,java无法在spring引导测试期间加载驱动程序类:“org.h2.driver”   java从安卓向服务器上传图像字节数组文件?   将C#到C再到Java集成时发生OutOfMemoryError/程序崩溃   java我如何只需按下一个按钮就能获得一次安卓位置?   多线程在Java中传递参数或使用静态变量的速度更快?   java Apache Calcite:ReflectiveSchema似乎不支持Linq4j“where”子句的比较表达式中的ParameterExpression   java在安卓:onClick属性的父上下文或祖先上下文中找不到方法   优化javaxx:+UseParNewGC垃圾收集选项仍然有缺陷吗?