1.文件上传

Models 设计

class Upload_File(models.Model):
image = models.FileField(upload_to='file/%Y/%m',default = 'image/default.png',max_length=100)
add_time = models.DateTimeField(auto_now_add=True,verbose_name='添加时间')

forms 设计

from django import forms
from .models import Upload_File class UploadFileForm(forms.ModelForm):
class Meta:
model = Upload_File
fields = ['image']

settings设计

STATIC_URL = '/static/'

MEDIA_URL = '/media/'  #文件上传目录
MEDIA_ROOT = os.path.join(BASE_DIR, 'media') #文件上传地址

View设计(上传思路:先保存到本地media目录然后读取目录,保存到云服务器,方法比较笨,但是能实现后期优化)

#阿里云OSS的基本配置
access_key_id = os.getenv('OSS_TEST_ACCESS_KEY_ID', 'LLLLLLLLLL')
access_key_secret = os.getenv('OSS_TEST_ACCESS_KEY_SECRET', 'BBBBBB')
bucket_name = os.getenv('OSS_TEST_BUCKET', 'CCCCC')
endpoint = os.getenv('OSS_TEST_ENDPOINT', 'https://oss-cn-beijing.aliyuncs.com') # 确认上面的参数都填写正确了
for param in (access_key_id, access_key_secret, bucket_name, endpoint):
assert '<' not in param, '请设置参数:' + param # 创建Bucket对象,所有Object相关的接口都可以通过Bucket对象来进行 def GetForm(request):
"""
请求表单
""" file = Upload_File() if request.method == 'POST':
Up_File = UploadFileForm(request.POST, request.FILES)
if Up_File.is_valid():
headFile = Up_File.cleaned_data['image']
file.image = headFile
print(MEDIA_ROOT)
file.save() print(file.image.name)
print(file.image.path) bucket = oss2.Bucket(oss2.Auth(access_key_id, access_key_secret), endpoint, bucket_name) bucket.put_object_from_file('{}/{}'.format('media', file.image.name),'{}/{}'.format('media', file.image.name)) # # 下载到本地文件
# bucket.get_object_to_file('media/file/2018/01/1曾经有一份真挚的爱情大话西游经典片段.mp4', 'media/file/2018/01/1曾经有一份真挚的爱情大话西游经典片段.mp4') return HttpResponse('{"status":"success"}', content_type='application/json')

URL设计

from django.views.static import serve #用于处理上传文件
from django_upload.settings import MEDIA_ROOT # 上传文件
url(r'^form/$', GetForm, name='go_form'), # 配置上传文件的访问函数
url(r'^media/(?P<path>.*)$', serve, {'document_root': MEDIA_ROOT}),

HTML

     <form action="{% url 'go_form' %}" method="post" enctype="multipart/form-data" class="smart-green">
<span class="fl upload-inp-box" style="margin-left:70px;">
<input type="file" name="image" id="avatarUp" class="js-img-up"/>
</span>
<label>
<span>&nbsp;</span> <br><br><br> <input type="submit" class="button" value="提交"/> <br><br> </label>
{% csrf_token %}
</form>

2.文件下载:

View

def file_down(request):
"""
文件下载
"""
def readFile(fn, buf_size=262144):
f = open(fn, "rb")
while True:
c = f.read(buf_size)
if c:
yield c
else:
break
f.close() path = os.path.abspath(MEDIA_ROOT)
print(path)
  
  
  #文件相对路径
path = 'media/file/2018/01/遥领医疗数据AI项目商业计划书-20171211.pptx'
print(path) response = StreamingHttpResponse(readFile(path)) response['Content-Type'] = 'application/octet-stream'
response['Content-Disposition'] = 'attachment;filename=%s' % (urlquote('遥领医疗数据AI项目商业计划书-20171211.pptx')) #下载后的名字 return response

url设计

#文件下载
url(r'^file_down/$', file_down, name='file_down'),

HTML

<button>
<a href="/file_down/">下载</a>
</button>

django 文件上传(阿里云oss)下载(支持大文件下载)的更多相关文章

  1. 微信小程序中图片上传阿里云Oss

    本人今年6月份毕业,最近刚在上海一家小公司实习,做微信小程序开发.最近工作遇到一个小问题. 微信小程序图片上传阿里云服务器Oss也折腾了蛮久才解决的,所以特意去记录一下. 第一步:配置阿里云地址: 我 ...

  2. 文件上传-阿里云OSS-存储文件

    JS上传文件到阿里云OSS OSS支持流式写入和读出.特别适合视频等大文件的边写边读业务场景. 注意在OSS的控制台:跨域管理中设置允许的方法 <script> var client = ...

  3. 百度editor调用【图片上传阿里云】

    百度editor调用简单,但是图片和文件上传阿里云就有点难度了.下面我详细说一下. 百度富文本编辑器下载地址:http://ueditor.baidu.com/website/download.htm ...

  4. 阿里云OSS下载pdf文件,并在pdf文件上添加水印

    代码: 兵马未动,粮草先行 作者: 传说中的汽水枪 如有错误,请留言指正,欢迎一起探讨. 转载请注明出处. 公司要求从阿里云OSS下载pdf文件并且需要添加水印. 因此这里总结一下. 首先添加了一个F ...

  5. Django文件上传下载与富文本编辑框

    django文件上传下载 上传 配置settings.py # 设定文件的访问路径,如:访问http://127.0.0.1:8000/media/就可以获取文件 MEDIA_URL = '/medi ...

  6. base64格式的图片上传阿里云

    base64格式的图片上传阿里云 上传图片的时候,除了普通的图片上传,还有一张图片信息是以base64格式发送到后台的. 后台接受base64格式的图片,上传至阿里云代码:(主要是将base64转化成 ...

  7. python_way day21 Django文件上传Form方式提交,原生Ajax提交字符处啊,Django文件上传之原生Ajax方式、jQuery Ajax方式、iframe方式,Django验证码,抽屉示例,

    python_way day21 1.Django文件上传至Form方式 2.原生Ajax文件上传提交表单 使用原生Ajax好处:不依赖jquery,在发送一个很小的文件或者字符串的时候就可以用原生A ...

  8. JavaWeb多文件上传及zip打包下载

    项目中经常会使用到文件上传及下载的功能.本篇文章总结场景在JavaWeb环境下,多文件上传及批量打包下载功能,包括前台及后台部分.  首先明确一点:  无法通过页面的无刷新ajax请求,直接发下载.上 ...

  9. django文件上传、图片验证码、抽屉数据库设计

    1.Django文件上传之Form方式 settings.py, ALLOWED_HOSTS = ['*'] INSTALLED_APPS = [ 'django.contrib.admin', 'd ...

  10. 在CabloyJS中将Webpack生成的文件自动上传到阿里云OSS

    背景 阿里云OSS提供了一个Webpack插件,可在Webpack打包结束后将webpack生成的文件自动上传到阿里云OSS中 下面看看在CabloyJS中如何使用该插件 新建项目,并配置MySQL连 ...

随机推荐

  1. 【转载】惠新宸:PHP在百度的应用现状及展望

    http://blog.sina.com.cn/s/blog_645f8e970100qvd8.html 惠新宸,百度PHP高级顾问,年二十有八,好追根究底,有不良嗜好, 幸性本善.乙酉年识互联网,丁 ...

  2. 进程控制块(PCB)结构

    一.进程控制块(PCB)结构 进程控制块(PCB)是系统为了管理进程设置的一个专门的数据结构.系统用它来记录进程的外部特征,描述进程的运动变化过程.同时,系统可以利用PCB来控制和管理进程,所以说,P ...

  3. ActiveReport开发入门-图表的交互性

    继续上一篇ActiveReport开发入门-列表的交互性文章,这次我们说一下图表的交互性,那么我们就开始吧 首先:说一下,如果单单的使用按钮栏和图表是满足不了的,因为图表在Active中是有些特别的, ...

  4. unity3d GameCenter的使用

    原地址:http://blog.sina.com.cn/s/blog_6b3661a901013zmh.html 因为开发的游戏需要支持GameCenter,老大把这活交给我来搞,于是俺就百度Goog ...

  5. QtGui.QProgressBar

    A progress bar is a widget that is used when we process lengthy tasks. It is animated so that the us ...

  6. Android获取手机位置代码实现

    1.项目Src下创建...service包,然后新建GPSService类 package com.zebra.mobilesafe.service; import java.io.IOExcepti ...

  7. canvas的api

    Canvas API(画布)用于在网页实时生成图像,并且可以操作图像内容,基本上它是一个可以用JavaScript操作的位图(bitmap).使用前,首先需要新建一个canvas网页元素. 1 2 3 ...

  8. hibernate+spring mvc, 解决hibernate 对象懒加载 json序列化问题

    引用地址 在使用Spring MVC时,@ResponseBody 注解的方法返回一个有懒加载对象的时候出现了异常,以登录为例: @RequestMapping("login") ...

  9. C3P0连接参数解释

    <c3p0-config> <default-config> <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数.Default: 3 --> < ...

  10. PHP - MAC下PhpStorm安装调试环境xdebug

    今天下午一直在捣鼓如何用PhpStorm进行调试,查找了许多资料,零零碎碎的,所以自己弄篇文章记录一下步骤. 安装xdebug 使用brew安装xdebug,语法如下 brew install hom ...