zoukankan      html  css  js  c++  java
  • django项目添加图片上传功能

    第一步,在settings.py中加入如下:

    MEDIA_URL = '/media/'
    MEDIA_ROOT = os.path.join(BASE_DIR,'media')

    第二步,在view视图中添加如下函数(restful是我封装的函数,可以看另外一篇文章查看内容)

    @require_POST
    def upload(request):
        file = request.FILES.get('file')
        name = file.name
        with open(os.path.join(settings.MEDIA_ROOT,name), 'wb') as f:
            for chunk in file.chunks():
                f.write(chunk)
        url = request.build_absolute_uri(settings.MEDIA_URL+name)
        return restful.result(data={'url': url})

    第三步,编写ajax.js来实现通过ajax发送图片到后台,这里要注意,图片必须通过formData函数来封装,并且在发送post请求是需要加入额外两个参数(process和contentType)

    function Banners() {
        var self = this;
        self.counts = $('.loop-img').length;
    
    }
    
    //cms后台管理系统修改轮播图片
    Banners.prototype.addbanners = function () {
        var self = this;
        var addBtn = $('.cms-header .button button');
        addBtn.click(function () {
            console.log(self.counts);
            var tpl = template('add-banners',{'counts': self.counts});
            var bannerGrouplist = $('.row');
            bannerGrouplist.prepend(tpl);
            var bannerItem = bannerGrouplist.find('.loop-img:first');
            self.addimg(bannerItem);
            self.counts += 1;
        });
    };
    //点击添加图片按钮事件
    Banners.prototype.addimg = function (bannerItem) {
        var inputimg = bannerItem.find('img');
        var self = this;
        inputimg.click(function () {
            var inputimage = $(this).parent().siblings('#addimg');
            inputimage.click();
            inputimage.change(function () {
                var file = this.files[0];
                var formdata = new FormData();
                formdata.append('file',file);
                $.post({
                    'url': '/cms/upload/',
                    'data': formdata,
                    'processData': false,
                    'contentType': false,
                    'success': function (result) {
                        if (result.code === 200) {
                            var url = result.data.url;
                            console.log($(this));
                            inputimg.attr('src',url);
                        }
                    }
                })
            })
        });
    
    
    };
    
    
    Banners.prototype.run = function () {
        this.addbanners();
    };
    
    $(function () {
        var banners = new Banners();
        banners.run();
    });

    结果示例图如下:

  • 相关阅读:
    ActiveJDBC 学习笔记
    selenium相关技术研究(从1.0-3.0)
    如何记录selenium自动化测试过程中接口的调用信息
    TestNG进行接口测试,脚本及可维护性框架
    贪多必失,精通一样再往下一样
    测试开发之路:英雄迟暮,我心未老
    接口测试面试题
    自动化测试中的滚动
    maven配置环境变量失败解决办法
    注释——创建新的类(文件)时,自动添加作者创建时间(文件注释)等信息的设置方法
  • 原文地址:https://www.cnblogs.com/fengzi7314/p/12729156.html
Copyright © 2011-2022 走看看