Example #1
0
    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
Example #2
0
 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)
Example #3
0
 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)