Django-Fileinput

本文详细介绍了如何在Django中实现文件上传功能,包括前台表单设计和后台处理逻辑,帮助开发者理解并掌握这一常见操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前台:

<input id="myfiles" class="file" type="file" name="file" multiple>

name是传给后台的!

<script>
        $(document).on('ready', function () {
                $("#myfiles").fileinput();
            });
        $('#myfiles').fileinput({
            language: 'zh',
            uploadUrl: '/FileUploads/',
            allowedFileExtensions: ['exe','jpg', 'png', 'gif','mp4','mp3','avi','rmvb','rar','zip','tar','doc','docx','xls','xlsx','pdf'],
            enctype:'multipart/form-data',
            showUpload:true,//上传按钮upload
            showRemove:true,//删除按钮remove
            //showPreview:true,//预览
            //showCaption:false,//标题
            maxFileSize:0,//KB//无限制
            maxFileCount:8,
            dropZoneEnabled:true,//拖拽区域
            browseClass: "btn btn-primary",
            uploadAsync:true,
            layoutTemplates:{
                //actionDelete: '',//去除上传预览的缩略图中的删除图标
                actionUpload: '',//去除上传预览的缩略图中的上传图标
                //actionZoom: '',//去除上传预览的缩略图中的详情图标
            },
            uploadExtraData: function () {
                return {};//uploadExtraData要么不设置,要么至少为空
            },
            previewFileIconSettings: {
                'docx':'<li class="fa fa-file-word-o text-primary"></li>',
                'doc':'<li class="fa fa-file-word-o text-primary"></li>',
                'xlsx':'<li class="fa fa-file-excel-o text-success"></li>',
                'xls':'<li class="fa fa-file-excel-o text-success"></li>',
                'ppt':'<li class="fa fa-file-powerpoint-o text-danger"></li>',
                'pptx':'<li class="fa fa-file-powerpoint-o text-muted"></li>',
                'pdf':'<li class="fa fa-file-achive-o text-muted"></li>',
            }
        }).on("fileuploaded",function (event,data,previewId,index) {
            console.log(data);
        });
    </script>

后台:以前写过,再贴一下

@csrf_exempt
def FileUploads(req):
    file = req.FILES.get('file')  # 获取文件对象,包括文件名文件大小和文件内容
    #print(file)
    curttime = time.strftime("%Y%m%d")
    upload_url = os.path.join(settings.MEDIA_ROOT,'attachment',curttime)
    #print(upload_url)
    folder = os.path.exists(upload_url)
    if not folder:
        os.makedirs(upload_url)
        print("创建文件夹")
    if file:
        file_name = file.name
        if os.path.exists(os.path.join(upload_url,file_name)):
            name, etx = os.path.splitext(file_name)
            addtime = time.strftime("%Y%m%d%H%M%S")
            finally_name = name + "_" + addtime + etx
            #print(name, etx, finally_name)
        else:
            finally_name = file.name

        upload_file_to = open(os.path.join(upload_url, finally_name), 'wb+')
        for chunk in file.chunks():
            upload_file_to.write(chunk)
        upload_file_to.close()

        file_upload_url = settings.MEDIA_URL + 'attachment/' + curttime + '/' +finally_name
        #print(file_upload_url)
        #构建返回值
        response_data = {}
        response_data['FileName'] = file_name
        response_data['FileUrl'] = file_upload_url
        response_json_data = json.dumps(response_data)
        #print(response_data, response_json_data)
        return HttpResponse(response_json_data)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值