加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 使用Turbogears 2上传文件

发布时间:2020-12-17 00:51:57 所属栏目:Python 来源:网络整理
导读:我一直试图用Turbogears 2来制定管理文件上传的“最佳实践”方法,到目前为止还没有真正找到任何例子.我已经找到了实际上传文件的方法,但我不确定它有多可靠. 另外,获取上传文件名的好方法是什么? file = request.POST['file'] permanent_file = open(os.pat

我一直试图用Turbogears 2来制定管理文件上传的“最佳实践”方法,到目前为止还没有真正找到任何例子.我已经找到了实际上传文件的方法,但我不确定它有多可靠.

另外,获取上传文件名的好方法是什么?

    file = request.POST['file']
    permanent_file = open(os.path.join(asset_dirname,file.filename.lstrip(os.sep)),'w')
    shutil.copyfileobj(file.file,permanent_file)
    file.file.close()
    this_file = self.request.params["file"].filename 
    permanent_file.close()

所以假设我理解正确,这样的事情会避免核心’命名’问题吗? id = UUID.

    file = request.POST['file']
    permanent_file = open(os.path.join(asset_dirname,id.lstrip(os.sep)),permanent_file)
    file.file.close()
    this_file = file.filename
    permanent_file.close()
最佳答案
@mhawke – 你是对的,你必须处理 – 取决于你正在对文件做什么,如果有一个名称冲突没关系,例如你只关心一些数据的最新版本然后可能没有问题,或者如果文件名实际上不重要只是文件内容,但它仍然是不好的做法.

您可以在tmp目录中使用命名的临时文件,然后将文件一经验证移动到其最终位置.或者您可以检查文件名是否已经存在,如下所示:

file.name = slugify(myfile.filename)
name,ext = os.path.splitext(file.name)
while os.path.exists(os.path.join(permanent_store,file.name)):
    name += '_'
    file.name = name + ext

raw_file = os.path.join(permanent_store,file.name)

slugify方法将用于整理文件名…

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读