Exemplo n.º 1
0
 def upload(self):
     ret = []
     self.mkdir_if_not_exists()
     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()
         # 如果,文件已存在
         # 如果,已存在的文件的父文件夹和目标文件夹不一致,则复制
         # 否者,沿用file文件(不用else)
         if file and file.parent_id != self.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)
         # 如果,文件不存在
         if not file:
             absolute_path, relative_path, uuid_filename = self._get_store_path(
                 single.filename)
             secure_filename(single.filename)
             single.save(absolute_path)
             File.create(parent_id=self.parent_id,
                         name=single.filename,
                         uuid_name=uuid_filename,
                         path=relative_path,
                         extension=self._get_ext(single.filename),
                         size=self._get_size(single),
                         md5=file_md5)
             file = File.get(parent_id=self.parent_id, md5=file_md5)
         ret.append(file)
     return ret
Exemplo n.º 2
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
Exemplo n.º 3
0
 def create_folder(parent_id, filename):
     '''
     :param parent_id: 父级目录ID
     :param filename: 文件名
     :return:
     '''
     File.abort_repeat(parent_id=parent_id,
                       name=filename,
                       msg='文件名重复,请重命名!')
     File.create(parent_id=parent_id, name=filename)
Exemplo n.º 4
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)