Django 批量保存图片文件 自定义上传方法
1.前端通过formData的方式批量增加图片或文件
for (var i = 0; i < form_img_list.length; i++) {
formData.append('image_file', form_img_list[i]);
}
AJAX写法
$('#submit_save_b').click(function (e) {
//formData 增加值
e.preventDefault()
console.log(form_img_list,33333);
for (var i = 0; i < form_img_list.length; i++) {
formData.append('image_file', form_img_list[i]);
}
formData.append('advertiser', $('#base_username_id').text());
formData.append('campaign_name', $('#adv_name_value').val());
formData.append('campaign_id', $('#adv_plan_value').val());
formData.append('data', $('#adv_des_value').val());
formData.append('title', $('#adv_title_value').val());
formData.append('ad_imp_type', $('#ad_imp_type').val());
formData.append('landing_url', $('#adv_landing_value').val());
formData.append('enable', 1);
formData.append('remove_img_list', remove_img_list);
console.log(formData);
var checkText = $("#id_select_ad_campaing").find("option:selected").text();
if (checkText == '请选择广告计划:') {
alert('请选择广告计划');
return false;
}
var csrftoken = getCookie('csrftoken');
$.ajax({
cache: false,
type: 'POST',
data: formData,
url: '/advertisement_list/',
traditional: true, //为必须内容
//dataType:'json', //data为json时必须
processData: false, //为必须内容
contentType: false, //为必须内容
success: function (data, textStatus, jqXHR) {
console.log(data);
if (jqXHR.status == 201) {
$('.page-content').fadeOut(300,function(){
$('.center').fadeIn(300)
})
show_list_table();
$('#Adver_Cell_Modal').modal('hide');
form_ad_campaing_reset();
}
},
beforeSend: function (xhr, settings) {
xhr.setRequestHeader("X-CSRFToken", csrftoken);
},
error:function(data){
console.log(222)
}
});
});
View写法
#获取多个文件
upload_images = request.FILES.getlist('image_file')
for a_index, afile in enumerate(upload_images):
#调用自定义上传文件方法
f_name, f_path = oss_storage.handle_uploaded_file(afile)
# 保证文件名不重复
current_time = time.time()
current_time = '{}_{}'.format(current_time, str(random.randint(1, 100))) image_url = 'http://liquid-xad.oss-cn-beijing.aliyuncs.com/{}/{}'.format('upload_test',
'{}_{}'.format(
current_time,
str(f_name))) oss_path = 'upload_test/{}'.format('{}_{}'.format(current_time, str(afile)))
f_path_name = '{}{}'.format(f_path, f_name)
upload_status = oss_storage.upload(oss_path, f_path_name)
print(upload_status) advertismen.ad_imp_type = p_ad_imp_type
advertismen.img_url = '' if a_index == 0:
advertismen.img_url_2 = image_url
advertismen.save()
os.remove(f_path_name) if a_index == 1:
advertismen.img_url_3 = image_url
advertismen.save()
os.remove(f_path_name) if a_index == 2:
advertismen.img_url_4 = image_url
advertismen.save()
os.remove(f_path_name) advertismen.save()
自定义上传方法
class Oss_Storage(object):
def handle_uploaded_file(self,f):
path = os.path.abspath(MEDIA_ROOT)
file_path = '{}/file/'.format(path)
BASE_DIR = file_path
try:
path = BASE_DIR
if not os.path.exists(path):
os.makedirs(path)
else:
file_name = str(path + f.name)
destination = open(file_name, 'wb+')
for chunk in f.chunks():
destination.write(chunk)
destination.close()
except Exception as e:
print(e)
return f.name, path
Django 批量保存图片文件 自定义上传方法的更多相关文章
- python3-开发进阶补充Django中的文件的上传
PS:这段时间有点不在状态,刚刚找回那个状态,那么我们继续曾经的梦想 今天我们来补充一下文件的上传的几种方式: 首先我们先补充的一个知识点: 一.请求头ContentType: ContentType ...
- Django uplodify 多文件同时上传
Js代码: //批量上传按钮 $('#fileupload').uploadify ({ 'swf' : '/CoveragePlaform/media/uploadify-3.2/uploadify ...
- mac svn .a文件的上传方法
1.首先确认是否安装了Command Line Tools,如果没有,就Xcode-Preference-Downloads,选择Command Line Tools-install就可以了 2.打开 ...
- 图片base64格式转为file文件类型上传方法
日常使用文件上传方式,都是通过input type='file'的文件选择框进行文件上传.但是会通过其他交互方式等到图片的base64格式进行上传.具体情况如下示意: 在项目开发中,需要进行照片采集, ...
- element-ui el-upload http-request自定义上传方法
html <el-form-item class="upload-bg register-bg" prop="ad_url"> <div cl ...
- 使用django进行大文件的上传下载
下载 基于Django建立的网站,如果提供文件下载功能,最简单的方式莫过于将静态文件交给Nginx等处理,但有些时候,由于网站本身逻辑,需要通过Django提供下载功能,如页面数据导出功能(下载动态生 ...
- Django(十九)文件上传:图片上传(后台上传、自定义上传)、
一.基本设置 参考:https://docs.djangoproject.com/zh-hans/3.0/topics/http/file-uploads/ 1)配置project1/settings ...
- struts2 文件的上传下载 表单的重复提交 自定义拦截器
文件上传中表单的准备 要想使用 HTML 表单上传一个或多个文件 须把 HTML 表单的 enctype 属性设置为 multipart/form-data 须把 HTML 表单的method 属性设 ...
- 使用jQuery.FileUpload插件和服Backload组件自定义上传文件夹
在零配置情况下,文件的上传文件夹是根目录下的Files文件夹,如何自定义文件的上传文件夹呢? □ 在web.config中配置 1: <configuration> 2: <conf ...
随机推荐
- [转]解决Eclipse中编辑xml文件的智能提示问题
转自:http://hi.baidu.com/cghroom/item/48fd2d0dc1fc23c675cd3c3e 摘要: Eclipse for Android xml 文件代码自动提示功能 ...
- VBS调用OUTLOOK发送邮件,windows计划任务定时拉起VBS调用OUTLOOK发送邮件
OUTLOOK有延迟传递功能,可延迟传递的发送邮件在功能设计时(mircosoft的support帮助页的解释)就是邮件发送时的时间而不是邮件发送成功后的时间.比如早上10点发一封11点后的延迟传递邮 ...
- 树莓派进阶之路 (028) - 树莓派SQLite3的安装
MySQL占用内存太大,而SQLite是一款轻量级零配置数据库,非常适合在树莓派和其他嵌入式系统中使用.SQLite文档详细资料丰富,本文不会详细解释SQLite数据库操作的方方面面,只能结合具体场景 ...
- SQL如何获得本季度第一天、一年的第一天、本月的最后一天
nterval 参数,具有以下设定值: 设置 描述 Year yy, yyyy 年 quarter qq, q 季 Month mm, m 月 dayofyear dy, y 一年的日数 Day dd ...
- JSON之Asp.net MVC C#对象转JSON,DataTable转JSON,List<T>转JSON,JSON转List<T>,JSON转C#对象
一.JSON解析与字符串化 JSON.stringify() 序列化对象.数组或原始值 语法:JSON.stringify(o,filter,indent) o,要转换成JSON的对象.数组或原始值 ...
- php超时时间说明
一,http请求超时时间 可能出现的场景: 1,curl进程运行了一个世纪还木结束,curl的时候设置了超时时间 --connect-timeout 1000 2,operation timed ou ...
- Fiddler基础用法-抓取浏览器数据包
Fiddler基础知识 Fiddler是强大的抓包工具,它的原理是以web代理服务器的形式进行工作的,使用的代理地址是:127.0.0.1,端口默认为8888,我们也可以通过设置进行修改. 代理就是在 ...
- 缓存机制和Hibernate的缓存机制介绍
缓存是介于应用程序和物理数据源之间,其作用是为了降低应用程序对物理数据源访问的频次,从而提高了应用的运行性能.缓存内的数据是对物理数据源中的数据的复制,应用程序在运行时从缓存读写数据,在特定的时刻或事 ...
- 幽灵漏洞(Ghost gethost)
幽灵漏斗简介: 编号CVE-2015-0235的GHOST(幽灵)漏洞是Qualys研究员发现的一个Linux服务上非常严重的安全漏洞,可以被利用来远程代码执行及本地权限提升. 漏洞简要描述 该漏洞存 ...
- java.io.IOException: Incompatible namespaceIDs
问题描述: 在实验的时候,需要往以前的集群中添加一台datanode,在添加之前,由于在调式namenode的时候,格式化了dfs,这就导致了namenode上的namespaceID和以前集群上 ...