django+python大文件上传-创新互联

大文件上传服务
一、前端
[webuploader](http://fex.baidu.com/webuploader/ ''webuploader'')
二、后端
django 2.0.0
这里只贴出核心的代码:
前端的:

成都创新互联公司自2013年起,先为都昌等服务建站,都昌等地企业,进行企业商务咨询服务。为都昌企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。



    
    Title
    









选择文件

后端的:
路由

path('files/upload/', views.fileupload,name='图片分片上传'),
    path('upload/complete/', views.fileMerge,name='上传成功合并'),

视图:

@csrf_exempt
def fileupload(request):
    if request.method == 'POST':
        upload_file = request.FILES.get('file')
        task = request.POST.get('task_id')  # 获取文件唯一标识符
        chunk = request.POST.get('chunk', 0)  # 获取该分片在所有分片中的序号
        filename = '%s%s' % (task, chunk)  # 构成该分片唯一标识符
        print("filename=",filename)
        default_storage.save('./upload/%s' % filename,ContentFile(upload_file.read()))  # 保存分片到本地
    return render_to_response('upload.html',locals())

@csrf_exempt
def fileMerge(request):
    print(request.GET)
    task = request.GET.get('task_id')
    ext = request.GET.get('filename', '')
    upload_type = request.GET.get('type')
    if len(ext) == 0 and upload_type:
        ext = upload_type.split('/')[1]
    ext = '' if len(ext) == 0 else '.%s' % ext  # 构建文件后缀名
    chunk = 0
    with open('./upload/%s%s' % (task, ext), 'wb') as target_file:  # 创建新文件
        while True:
            try:
                filename = './upload/%s%d' % (task, chunk)
                source_file = open(filename, 'rb')  # 按序打开每个分片
                target_file.write(source_file.read())  # 读取分片内容写入新文件
                source_file.close()
            except IOError:
                break
            chunk += 1
            os.remove(filename)  # 删除该分片,节约空间
    return render_to_response('upload.html',locals())

效果图:
django+python大文件上传

创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。


名称栏目:django+python大文件上传-创新互联
本文链接:http://hbruida.cn/article/cdgsgg.html