1
HuberyPang 2020-06-06 16:35:46 +08:00 via Android 1
文件上传时,前端可以获取文件的大小和类型,语音时常啥的就不清楚了。所以可以前端获取。
后端处理,可以自己维护文件的保存,这样可以确保在获取文件信息时已经保存过文件了,可以直接在下面读取文件的信息, 注意下提交异常时,进行回滚,清除刚保存的文件就行了。 |
2
wxd92 OP @HuberyPang 感谢, “可以自己维护文件的保存,这样可以确保在获取文件信息时已经保存过文件了” -》 这个可以详细说下吗? 自己维护文件的保存?
|
3
HuberyPang 2020-06-06 16:54:29 +08:00 1
@wxd92 https://www.cnblogs.com/linxiyue/p/4038436.html 给你个参考连接 关键词 request.FILES
|
4
zachlhb 2020-06-06 17:12:44 +08:00 via Android 1
你拿到文件不得执行 io 写入,写入完成这还不知道么
|
6
ericls 2020-06-06 18:28:25 +08:00 via iPhone 1
用户不会传到你的目录 只会传给你 web server 你拿到 文件(file or file-like io object) 以后自己放到目录里的。 在你拿到文件的时候 你就知道大小了
|
7
wxd92 OP @ericls 感谢 我想的是 在存到 database 之前 我需要获取文件,计算得到我需要的一些信息,如语音文件的时长,等, 拿来更新数据库
|
8
fensou 2020-06-06 22:46:50 +08:00 via iPhone
怠速抖动硬伤
|
9
HashV2 2020-06-07 02:01:45 +08:00 1
我好像写过类似的
我是直接在 model 下重写 save 方法做一些操作后再执行父类的 save 的: class DocumentModel(model): """ 字段定义略过 """ def save(self, force_insert=False, force_update=False, using=None, update_fields=None): # 大概是这样,具体忘了,这个节点是可以直接拿到 FileField 的文件内容的,怎么操作就随便了 self.Size = self.FileField.size self.Length = XXXX super(DocumentModel, self).save() |
11
wxd92 OP 感谢感谢 (又看了看文档 发现可以处理 temporyFile 的 TemporaryUploadedFile
|