def upload(self): ret = [] for single in self._file_storage: file_md5 = self._generate_md5(single.read()) single.seek(0) file = File.query.filter_by(md5=file_md5).first() parent_folder = File.get_or_404(id=self.parent_id) if file and self.parent_id != file.parent_id: if not File.query.filter_by(parent_id=self.parent_id, md5=file_md5).first(): file = FileDao.copy_file(dest_parent_id=self.parent_id, src_file_id=file.id, user_id=parent_folder.user_id) file = File.get(md5=file_md5) if not file: absolute_path, relative_path, uuid_filename = self._get_store_path( single.filename) # 上传到七牛云,获取存储地址 path = self.save(single.filename, single.read()) if path: secure_filename(single.filename) File.create(parent_id=self.parent_id, name=single.filename, uuid_name=uuid_filename, path=path, extension=self._get_ext(single.filename), size=self._get_size(single), md5=file_md5, _from=UrlFromEnum.NETWORK.value) file = File.get(parent_id=self.parent_id, md5=file_md5) ret.append(file) return ret
def copy_file(dest_parent_id, src_file_id): ''' :param dest_parent_id: 目标父级目录ID :param src_file_id: 源文件ID :return: ''' src_file = File.get_or_404(id=src_file_id) File.create(parent_id=dest_parent_id, uuid_name=src_file.uuid_name, name=src_file.name, path=src_file.path, extension=src_file.extension, _from=src_file._from, size=src_file.size, md5=src_file.md5)
def rename_file(file_id, new_filename): file = File.get_or_404(id=file_id) File.abort_repeat(parent_id=file.parent_id, name=new_filename, msg='文件名重复,请重命名!') file.update(name=new_filename)