django 文件上传样例以及遇到的一些问题
使用django上传文件 主流有两种方法 from表单以及ajax,为了自由度高一点,选择了ajax来实现文件的上传
前端部分代码如下: 主要关注
一 有一个文件上传(type='file')的按钮,绑定了id f
二 有一个submit按钮来确认文件上传 绑定id FileUpload
<div class="form-group">
<label for="exampleInputFile">File input</label>
<input type="file" id="f">
<p class="help-block">Example block-level help text here.</p>
</div>
</div>
<!-- /.box-body -->
<div class="box-footer">
<button type="submit" class="btn btn-primary" id="FileUpload">Submit</button>
</div>
</div>
JS代码如下
需要注意的是 绑定了submit点击事件,点击了之后通过FromData 方法 把文件以字典 f : $("#f")[0].files[0]); 方式传递给前端 $("#f")[0]是把JQ转换为JS对象
files[0]是获取文件,因为可能有很多文件,这里的意思是获取第一个文件。
$("#FileUpload").click(function () {
var formdata = new FormData();
formdata.append("csrfmiddlewaretoken", $("[name='csrfmiddlewaretoken']").val());
formdata.append("f", $("#f")[0].files[0]);
// console.log("asdasdas")
$.ajax({
url: "/assets/api/",
type: "post",
data: formdata,
contentType: false,
processData: false,
success: function (data) {
alert("上传成功!")
}
})
})
后端代码
通过mession的值做不同的任务
def api(request):if request.method == "POST" and request.POST.get('mession') == "fileupload":
f_obj = request.FILES.get("f")
print(f_obj)
name = f_obj.name
print(name)
destination = open(os.path.join("/opt/upload", name), 'wb+') # 打开特定的文件进行二进制的写操作
for chunk in f_obj.chunks(): # 分块写入文件
destination.write(chunk)
destination.close()
return HttpResponse("上传成功")
在文件传输的过程中,发现部分文件无法传输,发现django对文件的大小有限制,修改settings.py配置文件
from django.core.files.uploadedfile import InMemoryUploadedFile
from django.core.files.uploadhandler import TemporaryFileUploadHandler
FILE_UPLOAD_HANDLERS = [
'django.core.files.uploadhandler.MemoryFileUploadHandler',
'django.core.files.uploadhandler.TemporaryFileUploadHandler',
] FILE_UPLOAD_MAX_MEMORY_SIZE = 8621440
DATA_UPLOAD_MAX_MEMORY_SIZE = 8621440
DATA_UPLOAD_MAX_NUMBER_FIELDS = 5000
django 文件上传样例以及遇到的一些问题的更多相关文章
- python_way day21 Django文件上传Form方式提交,原生Ajax提交字符处啊,Django文件上传之原生Ajax方式、jQuery Ajax方式、iframe方式,Django验证码,抽屉示例,
python_way day21 1.Django文件上传至Form方式 2.原生Ajax文件上传提交表单 使用原生Ajax好处:不依赖jquery,在发送一个很小的文件或者字符串的时候就可以用原生A ...
- django文件上传、图片验证码、抽屉数据库设计
1.Django文件上传之Form方式 settings.py, ALLOWED_HOSTS = ['*'] INSTALLED_APPS = [ 'django.contrib.admin', 'd ...
- Django文件上传下载与富文本编辑框
django文件上传下载 上传 配置settings.py # 设定文件的访问路径,如:访问http://127.0.0.1:8000/media/就可以获取文件 MEDIA_URL = '/medi ...
- django文件上传和序列化
django实现文件上传 使用form表单上传文件 html页面 <html lang="en"> <head> <meta charset=&quo ...
- django文件上传
-------------------上传图片-------------------1.model中定义属性类型为models.ImageField类型 pic=models.ImageField(u ...
- Python Web框架篇:Django文件上传
上传方式: - Form表单上传文件 - Ajax上传文件 - 基于form表单和iframe自己实现ajax请求 1,创建项目 2,settings配置(注册app01,static路径等等这些)及 ...
- Django文件上传(经典上传方式)
经典文件上传方式 创建URL from django.contrib import admin from django.urls import path from django.conf.urls i ...
- django——文件上传_分页_ajax_富文本_celery
上传文件 概述 当Django在处理文件上传时,文件的数据被存储在request.FILES属性中 FILES只有在请求的方法为POST且提交的form表单带有enctype="multip ...
- django 文件上传(阿里云oss)下载(支持大文件下载)
1.文件上传 Models 设计 class Upload_File(models.Model): image = models.FileField(upload_to='file/%Y/%m',de ...
随机推荐
- jmeter测试报告套路
各位: 以下是本周第一次双师压测结果,后续优化后会更新优化结果. 配置: 压测环境: staging压测服务器配置4核16G,数据库4核8G 线上环境: 服务器配置16核24G,数据库主库 ...
- jeecg启动报错“com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server.”的解决办法
在运行"maven build"-->"tomcat:run"之后,报如下错误: com.mysql.jdbc.exceptions.jdbc4.MySQ ...
- python中dict对象和字符串string对象互相转换
使用json包 import json dict1 = {"A":"a","B":"b"} # 转换为字符串 json. ...
- The input file should be UTF8 without a byte-order-mark(BOM)
byte-order-mark = (BOM) 在unicode诸编码中,字节顺序标记-BOM被用于标记编码高低位的顺序. .BOM是一个特殊的unicode字符.早期标准定义其为“零长度.非断行的空 ...
- python3 正则表达式 re模块之辣眼睛 计算器
额...学到几个常用模块了,也要其中考试了,每天晚上敲一点,敲得脑壳疼,不过又想到好一点的办法了,有时间再改吧. 此非吾所欲也,实属无奈也....复习之路漫漫,吾将到书上求索,在此不多逗留,我挥一挥衣 ...
- centOS 安装 pm2
安装 npm install -g pm2 自启 pm2 startup centos 启动 pm2 start server/add.js (以实际路径为准) 其他命令: pm2 list #查看进 ...
- PDF转任意格式 & 做动画效果
1.PDF转任意格式 & 做动画效果|让PPT傻眼去吧! http://www.aiweibang.com/yuedu/6984803.html
- 双端队列 【deque】
题目链接:https://ac.nowcoder.com/acm/contest/1071/D 还是第一次简单运用双端队列.顾名思义:队列的头尾都可以进行插入跟删除操作. 存在于头文件 deque 中 ...
- 澎湃新闻速览版UWP 隐私策略
ThePaper UWP 此为 澎湃新闻速览版 的隐私策略,本隐私策略内容会不定期更新,以最新内容为主. 若您已经阅读并了解以下内容后,并继续使用该软件,即表示您已同意该协议. 内容: 这是澎湃新闻的 ...
- Python+requests重定向和追踪
Python+requests重定向和追踪 一.什么是重定向 重定向就是网络请求被重新定个方向转到了其它位置 二.为什么要做重定向 网页重定向的情况一般有:网站调整(如网页目录结构变化).网页地址改变 ...