layui + django 实现多图上传、预览、删除 解决csrf验证及上传端口异常

最近碰到一个项目需要多图上传且能预览能删除

前端使用layui

引入脚本

<link rel="stylesheet" href="/static/layui/css/layui.css">

<script src="/static/layui/layui.js"></script>

<script src="/static/js/jquery-1.8.2.min.js"></script>  <!--layui之外js-->

前端代码

{% csrf_token %}

<div>

<span>上传图片:</span>

 <button type="button" class="layui-btn" id="test1">

  <i class="layui-icon"></i>上传图片

</button>

<div class="layui-upload-list"></div>

<input type="submit"  id ="abc" class="layui-btn layui-btn-radius layui-btn-normal" style="font-size: 25px;" value=下一步>

</div>

<script>

layui.use([‘upload‘, ‘jquery‘], function(){

var upload = layui.upload;

var $ = layui.jquery;

//执行实例

var uploadInst = upload.render({

elem: ‘#test1‘, //绑定元素

multiple: true,

method: ‘POST‘,

auto: false,  //禁止自动上传

data: {

‘csrfmiddlewaretoken‘: function () {        //POST方法需要进行验证 获取验证

return $(‘:input:first‘).val()

}

},

acceptMime: ‘image/*‘,

bindAction: "#abc", //绑定上传

url: "{% url ‘proved‘ %}", //上传接口

choose: function (obj) { //obj参数包含的信息,跟 choose回调完全一致

//将每次选择的文件追加到文件队列

files = obj.pushFile();

//layer.load(); //上传loading

obj.preview(function (index, file, result) {

$(".layui-upload-list").append(‘<img src="‘ + result + ‘" id="remove_‘ + index + ‘" title="双击删除该图片" style="width:200px;height:auto;">‘)

$(‘#remove_‘ + index).bind(‘dblclick‘, function () {//双击删除指定预上传图片

delete files[index];//删除指定图片

$(this).remove();

})

//console.log(1, index); //得到文件索引

//console.log(2, file.name); //得到文件对象

//console.log(3, result); //得到文件base64编码,比如图片

})

},

done: function (res) {

//imgs = imgs.concat(res.Data)

//console.log(imgs)

if (res.code==0) {

layer.msg("图片上传成功!", { icon: 1, time: 1000 }

      //,function(){setTimeout(‘window.location.reload()‘,1000);}  //上传成功后刷新页面

           // window.location.href="{:url(‘test/index‘)}" //上传成功后跳转指定页面

      );}  //上传完毕回调

},

error: function () {

//请求异常回调

}

});

});

</script>

后台 views

import json

from django.http import JsonResponse

def proved(request):

if request.method ==‘GET‘:

return render(request,‘first/proved.html‘)

if request.method ==‘POST‘:

com_from = request.META.get("HTTP_REFERER")   //前端验证

for f in request.FILES.getlist(‘file‘):      //循环存储图片到库

pro = Prove()

pro.provePeople = request.user

pro.provePhoto = f

pro.save()

return JsonResponse({‘code‘: ‘0‘,‘msg‘: ‘OK‘})    //json返回 无返回前端会提示上传端口异常

原文地址:https://www.cnblogs.com/ddb1-1/p/12345388.html

时间: 2024-08-02 19:20:56

layui + django 实现多图上传、预览、删除 解决csrf验证及上传端口异常的相关文章

JavaScript 图片上传预览效果

图片上传预览是一种在图片上传之前对图片进行本地预览的技术.使用户选择图片后能立即查看图片,而不需上传服务器,提高用户体验.但随着浏览器安全性的提高,要实现图片上传预览也越来越困难.不过群众的智慧是无限的,网上已经有很多变通或先进的方法来实现.例如ie7/ie8的滤镜预览法,firefox 3的getAsDataURL方法.但在opera.safari和chrome还是没有办法实现本地预览,只能通过后台来支持预览.在研究了各种预览方法后,作为总结,写了这个程序,跟大家一起分享.上次写的简便无刷新文

js前端实现多图图片上传预览

<html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>测试页面</title> <script type="text/javascript"> //下面用于

jquery多图上传预览

html部分 <form method="post" action="" id="passForm" enctype="multipart/form-data" multipart=""> <div id="Pic_pass"> <p style="font-size: 20px;font-weight: bold;">请上传护照详

JS实现图片上传预览效果:方法一

<script type="text/javascript"> //处理file input加载的图片文件 $(document).ready(function(e) { //判断浏览器是否有FileReader接口 if(typeof FileReader =='undefined') { /*$("#images_show").css({'background':'none'}).html('亲,您的浏览器还不支持HTML5的FileReader接口

图片上传预览

例1: 1.先创建一个file表单域,我们需要用它来浏览本地文件. <form name="form1" id="form1" method="post" action="upload.php"> <input type="file" name="file1" id="file1" /> </form> 2.试下效果: 判断文件类型

Javascript之图片上传预览

使用Javascript之图片上传预览,我们无需上传到服务器中,兼容所有浏览器. 关键方法是使用微软库filter:progid:DXImageTransform.Microsoft.AlphaImageLoader来生成本地图片预览图的. <!DOCTYPE html> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <

ux.plup.File plupload 集成 ux.plup.FileLis 批量上传预览

1 //plupload 集成 2 Ext.define('ux.plup.File', { 3 extend: 'Ext.form.field.Text', 4 xtype: 'plupFile', 5 alias: ['widget.plupFile'], 6 requires: ['Ext.form.trigger.Component', 'Ext.button.Button', 'Ext.window.Toast'], 7 //plup对象 8 uploader: null, 9 //上

百度编辑器上传视频以及视频编辑器预览bug解决

百度编辑器目前来讲是运用比较广泛的一个编辑器了,不仅开源还有中文的文档,所以很受欢迎,不过里面也有许多地方需要开发人员自己调试,其中一个比较常见的问题就是上传视频了,上传视频本身有一些小bug,这个基本最大的体现就是编辑器内无法预览上传的视频问题. 我搜集了网上的解决方案,发现基本都一样,大多数都是复制黏贴的答案,虽说一定程度解决了编辑器上传不显示的问题,但却造成了新的bug,例如上传视频框无法关闭,还有只要等切换源码模式再返回来又看不到预览的视频了等. 所以最后还是自己动手丰衣足食,最后终于找

jQuery插件ImgAreaSelect 实例讲解一(头像上传预览和裁剪功能)

上一节随笔中,我们已经知道了关于jQuery插件ImgAreaSelect基本的知识:那么现在看一下实例: 首先,要知道我们应该实现什么功能? (1)图片能够实现上传预览功能 (2)拖拽裁剪图片,使其能够显示裁剪后的区域 (3)显示要裁剪区域的坐标 其次,该如何引用该插件呢? 那就具体看一下吧! 第一步:先将样式和文件包引入(根据你自己的位置引入) <!--引入imgareaselect的css样式--> <link rel="stylesheet" type=&qu