Esempio n. 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
Esempio n. 2
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