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 ...
随机推荐
- easymock快速入门
easymock是众多mock之中的很容易用的mock,今天刚开始学习,来个简单的教程.以购物车结算为例子,比如首先是每一个商品项的pojo. public class Item { private ...
- 【SqlServer】如何把本地SqlServer数据库部署到远程服务器上
这里笔者使用的使用SqlServer2012,本机和远程环境均为Win7. 1.选中需要部署的数据库,右击>任务>分离.选中删除连接. 2.现在在左侧的表中就看不见刚才那个数据了. 3.在 ...
- 【Spring】Spring框架如何集成Hibernate框架
下面个整理一下hibernate和Spring框架的结合. 首先是引入hibernate框架的包.Spring框架的包.数据库驱动包. User.java文件 package cn.shop.bean ...
- 【Oracle】详解ORACLE中的trigger(触发器)
本篇主要内容如下: 8.1 触发器类型 8.1.1 DML触发器 8.1.2 替代触发器 8.1.3 系统触发器 8.2 创建触发器 8.2.1 触发器触发次序 8.2.2 创建DML触发器 8.2. ...
- ActiveX IE保护模式下的低权限操作路径及Windows操作系统特殊路径
参考理解IE保护模式:https://blog.csdn.net/xt_xiaotian/article/details/5336809 文件帮助类: public class FileHelp { ...
- Mac PATH你所需要了解的
关于Mac环境变量你需要知道: 0.何为环境变量? 1.如何查看环境变量? 2.如何配置环境变量? 3.如何重置环境变量? 0.环境变量: 所谓环境变量,$PATH,应用于Linux,OS X,Uni ...
- python的内置下载器
python有个内置下载器,有时候在内部提供文件下载很好用. 进入提供下载的目录 # ls abc.aaa chpw.py finance.py lsdir.py ping.py u2d-partia ...
- youku视频
获取视频信息: http://v.youku.com/player/getPlayList/VideoIDS/153548356 <div class="player" id ...
- Java Date and Calendar examples
Java Date and Calendar examples This tutorial shows you how to work with java.util.Date and java.uti ...
- 基础001_Xilinx V7资源
作者:桂. 时间:2018-02-08 09:37:35 链接:http://www.cnblogs.com/xingshansi/p/8430247.html 前言 本文主要是Xilinx V7系 ...