def downloadlist(request, funid): if request.user.is_authenticated(): errors = [] if request.method == 'POST': file_remark = request.POST.get("file_remark", "") my_file = request.FILES.get("myfile", None) if not my_file: errors.append("请选择要导入的文件。") else: if os.sep in my_file.name: errors.append(r"""请注意文件命名格式,'\ / " * ? < > '符号文件不允许上传。""") else: myfilepath = settings.BASE_DIR + os.sep + "faconstor" + os.sep + "upload" + os.sep + "knowledgefiles" + os.sep + my_file.name c_exist_model = KnowledgeFileDownload.objects.filter(file_name=my_file.name).exclude(state="9") if os.path.exists(myfilepath) or c_exist_model.exists(): errors.append("该文件已存在,请勿重复上传。") else: with open(myfilepath, 'wb+') as f: for chunk in my_file.chunks(): # 分块写入文件 f.write(chunk) # 存入字段:备注,上传时间,上传人 c_file = KnowledgeFileDownload() c_file.file_name = my_file.name c_file.person = request.user.userinfo.fullname c_file.remark = file_remark c_file.upload_time = datetime.datetime.now() c_file.save() errors.append("导入成功。") return render(request, "downloadlist.html", {'username': request.user.userinfo.fullname, "errors": errors, "pagefuns": getpagefuns(funid, request=request)}) else: return HttpResponseRedirect("/login") def download_list_data(request): if request.user.is_authenticated(): result = [] c_files = KnowledgeFileDownload.objects.exclude(state="9") if c_files.exists(): for file in c_files: result.append({ "id": file.id, "name": file.person, "up_time": "{0:%Y-%m-%d %H:%M:%S}".format(file.upload_time), "remark": file.remark, "file_name": file.file_name, }) return JsonResponse({ "data": result }) def knowledge_file_del(request): if request.user.is_authenticated(): file_id = request.POST.get("id", "") assert int(file_id), "网页异常" c_file = KnowledgeFileDownload.objects.filter(id=file_id) if c_file.exists(): c_file = c_file[0] c_file.delete() c_file_name = c_file.file_name the_file_name = settings.BASE_DIR + os.sep + "faconstor" + os.sep + "upload" + os.sep + "knowledgefiles" + os.sep + c_file_name if os.path.exists(the_file_name): os.remove(the_file_name) result = "删除成功。" else: result = "文件不存在,删除失败,请于管理员联系。" return JsonResponse({ "data": result }) def download(request): if request.user.is_authenticated(): file_id = request.GET.get("file_id", "") assert int(file_id), "网页异常" c_file = KnowledgeFileDownload.objects.filter(id=file_id) if c_file.exists(): c_file = c_file[0] c_file_name = c_file.file_name else: raise Http404() try: the_file_name = settings.BASE_DIR + os.sep + "faconstor" + os.sep + "upload" + os.sep + "knowledgefiles" + os.sep +c_file_name response = StreamingHttpResponse(file_iterator(the_file_name)) response['Content-Type'] = 'application/octet-stream; charset=unicode' response['Content-Disposition'] = 'attachment;filename="{0}"'.format(escape_uri_path(c_file_name)) # escape_uri_path()解决中文名文件(from django.utils.encoding import escape_uri_path)return response except: return HttpResponseRedirect("/downloadlist") else: return HttpResponseRedirect("/login")<div id="static1" class="modal fade" tabindex="-1" data-backdrop="static" data-keyboard="false"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-hidden="true"></button> <h4 class="modal-title">上传</h4> </div> <div class="panel-body"> <form action="" enctype="multipart/form-data" class="form-horizontal" method="post">{% csrf_token %} <div class="form-body"> <div class="form-group"> <div class="fileinput fileinput-new col-md-2" data-provides="fileinput" style="position: relative;left: 30px;width:500px"> <span class="btn green btn-file"> <span class="fileinput-new"> 选择文件 </span> <span class="fileinput-exists"> 重新选择 </span> <input type="file" name="myfile"/> </span> <span class="fileinput-filename"> </span> <a href="javascript:;" class="close fileinput-exists" data-dismiss="fileinput"> </a> </div> </div> <div class="form-group"> <label class="col-md-2 control-label"><span style="color:red; "></span>备注</label> <div class="col-md-10"> <input id="file_remark" type="text" name="file_remark" class="form-control " placeholder=""> <div class="form-control-focus"></div> </div> </div> </div> <div class="form-actions "> <div class="modal-footer"> <button type="submit" id="upload" name="upload" class="btn green uppercase">上传</button> <button type="button" data-dismiss="modal" class="btn dark btn-outline">关闭 </button> </div> </div> </form> </div> </div> </div> </div> <link href="/static/assets/global/plugins/bootstrap-fileinput/bootstrap-fileinput.css" rel="stylesheet" type="text/css"/> <link href="/static/assets/global/plugins/datatables/datatables.min.css" rel="stylesheet" type="text/css"/> <link href="/static/assets/global/plugins/datatables/plugins/bootstrap/datatables.bootstrap.css" rel="stylesheet" type="text/css"/> <script src="/static/assets/global/plugins/datatables/datatables.min.js" type="text/javascript"></script> <script src="/static/assets/global/plugins/datatables/plugins/bootstrap/datatables.bootstrap.js" type="text/javascript"></script> <script src="/static/assets/global/plugins/bootstrap-fileinput/bootstrap-fileinput.js" type="text/javascript"></script>