def update(self, instance, validated_data): # 获取上传文件对象 file = validated_data['logo'] # 获取brand名称 name = validated_data['name'] # 获取首字母 first_letter = validated_data['first_letter'] # 上传图片到fdfs系统 fdfs = FDFSStorage() try: file_id = fdfs.save(file.name, file) except Exception: # 上传文件失败 raise APIException('上传文件失败') # 修改SKU图片数据 instance.name = name instance.logo = file_id instance.first_letter = first_letter instance.save() return instance
def post(self, request): """用户修改个人资料""" # 接收收据(当前版本只支持修改头像) user = request.user avatar = request.FILES.get('avatar') # 校验数据 if avatar is None: return redirect(reverse('user:user')) # 进行业务处理 # 获取用户对象 user = User.objects.get(id=user.id) if user: # 使用自定义存储类储存用户上传的文件 storage = FDFSStorage() filename = storage.save(avatar.name, avatar) # 修改头像 user.avatar = filename user.save() # 返回应答 return redirect(reverse('user:user'))
def upload_graduation_topic(request, student_id): user = request.user user_obj = User.objects.get(id=user.id) if request.method == "GET": context = { "student_id": student_id, } return render(request, "defense/upload_annex_and_request_defense.html", context) if request.method == "POST": form = AnnexForm(request.POST) file = request.FILES.get("file") temp_file = "%s/%s" % (settings.MEDIA_ROOT, file.name) with open(temp_file, 'wb') as upload_files: for chunk in file.chunks(): upload_files.write(chunk) # 写入临时文件 file_path = os.path.abspath(temp_file) print("##本地文件绝对路径", file_path) fdfs_storage = FDFSStorage() remote_file_id = fdfs_storage.upload(file_path)[1] if form.is_valid(): form = form.clean() print("##FORM内容:", form) if has_role(user_obj, ['student']): topic2student_obj = Topic2Student.objects.get(student=user.id) annex_topic = topic2student_obj.topic annex_obj = Annex.objects.create(file=remote_file_id, annex_phase_id=5, raw_name=form['raw_name'], uploader=user, detail="论文", topic=annex_topic) annex_obj.save() # 更改学生状态为已经上传论文并申请了答辩 user_obj.user_phase_id = 10 user_obj.save() print("##################") print("学生状态") print(user_obj.user_phase_id) print("##################") elif has_role(user_obj, ['teacher']): # topic2teacher_obj = Topic2Teacher.objects.get(teacher_id=user.id) # annex_topic = topic2teacher_obj.topic annex_obj = Annex.objects.create(file=remote_file_id, annex_phase_id=6, raw_name=form['raw_name'], uploader=user, detail="答辩文档", topic=None) else: return HttpResponse("你是个管理员吧???") # return redirect(reverse('topic:my_topic')) return render(request, "defense/upload_annex_and_request_defense.html", {"student_id": student_id})
def upload_open_topic(request): user = request.user user_obj = User.objects.get(id=user.id) # name = get_name_role(request)[0] # role = get_name_role(request)[1] # context = { # "name": name, # "role": role, # } if request.method == "POST": form = AnnexForm(request.POST) file = request.FILES.get("file") temp_file = "%s/%s" % (settings.MEDIA_ROOT, file.name) with open(temp_file, 'wb') as upload_files: for chunk in file.chunks(): upload_files.write(chunk) file_path = os.path.abspath(temp_file) fdfs_storage = FDFSStorage() remote_file_id = fdfs_storage.upload(file_path)[1] if form.is_valid(): form = form.clean() print("##FORM内容:", form) if has_role(user_obj, ['student']): topic2student_obj = Topic2Student.objects.get(student=user.id) annex_topic = topic2student_obj.topic annex_obj = Annex.objects.create(file=remote_file_id, annex_phase_id=2, raw_name=form['raw_name'], uploader=user, detail="form.detail", topic=annex_topic) annex_obj.save() # 更改学生状态为已经上传开题报告 user_obj.user_phase_id = 6 user_obj.save() elif has_role(user_obj, ['teacher']): # topic2teacher_obj = Topic2Teacher.objects.get(teacher_id=user.id) # annex_topic = topic2teacher_obj.topic annex_obj = Annex.objects.create(file=remote_file_id, annex_phase_id=1, raw_name=form['raw_name'], uploader=user, detail="开题报告模板", topic=None) annex_obj.save() else: return HttpResponse("你是个管理员吧???") return redirect(reverse('topic:my_topic')) return render(request, "open_topic/upload_open_topic.html")
def change_info(self, post, file, user): print('change_info') if file: fastdfs = FDFSStorage() user.img_url = fastdfs.save(file.name, file) if post['usersex']: user.sex = int(post['usersex']) user.username = post['username'] user.tele = post['telephone'] user.addr = post['address'] user.desc = post['userdesc'] user.save() return '信息修改成功'
def post(self, request): data = request.data fdfs = FDFSStorage() file = data['image'] print(file) try: file_id = fdfs.save(file.name, file) except Exception: raise APIException('上传失败') image_id = settings.FDFS_URL + file_id return Response({'img_url': image_id})
def save_img(self, imgs, details, imgdb_id): try: img_database = ImgsDatabase.objects.get(id=imgdb_id) except ImgsDatabase.DoesNotExist: return False # 将图片保存到fastdfs存储系统中 fastdfs = FDFSStorage() id_list = [] # 记录所添加图片的id用于传递到前端 for i in range(len(imgs)): img = Imgs() # 将图片保存到fastdfs存储系统中 img.img = fastdfs.save(imgs[i].name, imgs[i]) img.name = imgs[i].name img.detail = details[i] img.imgsdb_id = img_database img.save() id_list.append(img.id) res = '上传成功', id_list return res
def create(self, validated_data): # 获取上传文件对象 file = validated_data['logo'] brand = validated_data['id'] # 上传图片到FDFS系统 fdfs = FDFSStorage() try: file_id = fdfs.save(file.name, file) except Exception: raise APIException('上传失败') # 保存上传记录 brand_logo = Brand.objects.create( name=validated_data['name'], logo=file_id, first_letter=validated_data['first_letter']) if not brand.logo: brand.logo = brand_logo.logo.url brand.save() return brand_logo
def store_book(self, post, file, user, book_id): # 保存谱书信息 # print(post) book_id = int(book_id) if book_id: # 若book_id不为0,则表明是修改谱书内容,需到数据库中查找对应谱书 try: gene_book = GeneBook.objects.get(id=book_id) except GeneBook.DoesNotExist: return False # 判断是否需要更换谱书封面 if file: if gene_book.img_name != post['filename']: fastdfs = FDFSStorage() gene_book.img = fastdfs.save(file.name, file) gene_book.img_name = post['filename'] else: # 若book_id为0,则表明是新创建谱书 gene_book = GeneBook() if file: fastdfs = FDFSStorage() gene_book.img = fastdfs.save(file.name, file) gene_book.img_name = post['filename'] else: gene_book.img_name = None gene_book.name = post['bookname'] gene_book.author = post['author'] gene_book.desc = post['bookdesc'] gene_book.province = post['province'] gene_book.city = post['city'] gene_book.district = post['district'] gene_book.addr = post['address'] gene_book.grant = int(post['grant']) gene_book.user_id = user gene_book.audit_status = int(post['audit_select']) gene_book.save() return gene_book.id
def img_handle(request): f1 = request.FILES.get('img') fdfs = FDFSStorage() return HttpResponse(fdfs.save(f1.name, f1))
def images(self, request): img = request.data.get('image') file_id = FDFSStorage._save(self, name='', content=img) image_url = FDFS_URL + file_id data = {'img_url': image_url} return Response(data)