问题标签 [django-file-upload]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
django - 将文件从保存的 FileField 复制到 Django 中的 UploadedFile
我需要保存文件,不是来自 request.FILES,而是来自另一个保存的记录。
这是模型记录的代码:
以及视图(在本例MyForm
中是保存到 RealRecord 的模型表单):
所以这个东西基本上是一个FieldFile
被用作UploadedFile
对象的东西。
每个Foo
人都有一个带有名字的FooFile
记录awesome_file
和另一个带有名字的记录,mediocre_file
与RealRecord
.
疯狂的是,这完全验证了。但是,问题在于,在创建的结果记录中,awesome_file 和 mediocre_file 的路径都在“foo_folder”中。但我不希望“foo_folder”中的文件,我希望它们位于我为RealRecord
.
所以我想我想知道我可以对FieldFile
来自的值做些什么,FooField
以便它们表现得像传统的 UploadedFile 并获取它们各自字段的upload_to
和值。path
django - Django(音频)文件验证
我正在试验一个允许用户上传音频文件的网站。我已经阅读了所有可以使用的文档,但找不到太多关于验证文件的信息。
这里的总新手(以前从未做过任何类型的文件验证)并试图弄清楚这一点。有人可以握住我的手,告诉我我需要知道什么吗?
与往常一样,提前感谢您。
django - 这是确保删除与模型关联的 FileField 的方法吗?
当我删除具有 FileField 的模型实例时,实际文件将留在我的 MEDIA_ROOT 文件夹中。为了解决这个问题,我正在监听 post_delete 信号,并这样做:
它似乎工作正常,但我不确定这样做是否是最佳做法。有什么想法吗?
django - django:在本地磁盘上注册解压文件
[我提前为这个问题的长度道歉。]
我在 Debian 挤压上使用 Django 1.2.3-3+squeeze1。
我正在编写一个应用程序,它将 zip 文件上传到临时位置的磁盘,解压缩它们,然后将结果保存到永久位置。解压缩的文件在数据库中注册为解压缩后调用的类
FileUpload
。上传的压缩文件也对应一个类,但出于这个问题的目的,我将忽略它。FileUpload
看起来像这样。
我也使用由定义的表格
获取磁盘上解压缩文件的函数。将它们注册到数据库,并将它们移动到正确的位置称为
addFile
. 我以前使用这个:
这行得通,但问题是它将整个文件转储到内存中。对于大文件,特别是考虑到 Python 并不以内存经济着称,这会消耗大量内存。所以我切换到这个:
我被迫子类UploadedFile
化,因为已经存在(在
django/core/files/uploadedfile.py
)中的派生类似乎都没有做我想做的事。
该temporary_file_path
功能在那里,因为Django File Uploads 文档说
UploadedFile.temporary_file_path()
只有上传到磁盘的文件才会有这个方法;它返回临时上传文件的完整路径。
似乎该类在函数中FileSystemStorage
查找此属性,
如下所述。_save
如果n
是 zip 存档中文件的相对路径,则用法为
这可行,但我跟踪代码,发现代码正在使用流式传输,显然在这种情况下最佳做法是将文件从临时位置复制到永久位置。有问题的代码在
类django/core/files/storage.py
的_save
函数中
FileSystemStorage
。其中_save
,name
是目的地的相对路径,content
是一个File
对象。
该_save
函数正在寻找属性
temporary_file_path
。我相信这段代码是由temporary_file_path
前面提到的函数
触发的django/core/files/uploadedfile.py
。但是,实际传递的类(对应于content
参数)是<class
'django.db.models.fields.files.FieldFile'>
,这是content.__dict__
该对象的属性 dict( ) 的样子:
temporary_file_path
附加到
数据成员UnzippedFile
内部的类。_file
所以
content._file
有一个temporary_file_path
属性,而不是content
它本身。
这就是常规文件上传的样子。如您所见,它是相似的。
我很难详细了解代码是如何从对象FileUploadForm
save
传递到Storage
对象的。特别是 Django 表单代码非常晦涩难懂。
无论如何,我的问题是,在所有这些设置之后,下面的第一个选项file_move_safe
应该如何/何时被激活?我在这里看到了不匹配。这是一个错误吗?谁能澄清一下?
python - 如何在 Django 中更改对象的 FileField?
我有一个名为 ClassFile 的模型,它采用 FileField(文档):
提交文件上传表单后尝试保存以下 ClassFile 实例失败,因为 request.FILES['file'] 显然不存在:
我想知道我是否以正确的方式保存了这个对象。request.FILES['file'] 的类型是否正确?谢谢你。
django - 在 Django 中,如何访问 forms.py 中的文件字段?
我的 Django 应用程序的 forms.py 中有这个表单类:
我想通过一个干净的函数访问在 forms.py 中上传的文件以验证其名称。
但是,问题是错误提示在“QueryDict”中找不到“附件”。我将 request.FILES 绑定到提交表单。我还在我的表单上使用 enctype="multipart/form-data" 。我想知道在 forms.py 中访问 FileField 数据的正确方法是什么。
谢谢你。
django - 如何使用 FileFields 限制 ModelForms 文件上传的文件类型?
我的目标是将 Django ModelForm 上的 FileField 限制为 PDF 和 Word 文档。我用谷歌搜索的答案都是关于创建一个单独的文件处理程序,但我不确定如何在 ModelForm 的上下文中这样做。settings.py 中是否有我可以用来限制上传文件类型的设置?
django - 为什么我的文件不能保存到实例(它保存到磁盘...)?
我可以让我的文件保存到我告诉它的磁盘,但不能让它保存到实例,我一点也不知道为什么!
模型.py
视图.py
处理上传文件
song_upload.html(相关部分)
表格.py
该文件就在媒体/上传/音乐中,但在管理员中,audio_file 是空白的,如果我为 audio_file 设置空白 = False(这是我想要做的),我被告知此字段是必需的。是什么赋予了??
提前致谢!现在已经有一段时间了,文档对我来说似乎很轻松(newb)。
django - 如何在 Django 中获取 UploadedFile 的临时名称?
我正在做一些文件验证,并希望将 UploadedFile 加载到外部库中,同时它位于“/tmp”目录中,然后将其保存在可以执行的位置。Django 执行以下操作:
Django 会将上传的文件写入存储在系统临时目录中的临时文件中。在类 Unix 平台上,这意味着您可以期望 Django 生成一个名为 /tmp/ tmpzfp6I6.upload 之类的文件。
我希望能够获得“tmpzfp616.upload”。UploadedFile.name 给了我“”,而 file.name 给了我文件“example.mp3”的正确名称。
对于我正在使用的库,我需要将临时文件的文件路径传递给库,而不是文件本身,因此需要字符串。
有任何想法吗?
提前致谢。
编辑:这是我的代码:
使用“UploadedFile”我得到一个AttributeError“类型对象'UploadedFile'没有属性'temporary_file_path'”。如果我改为使用 file.temporary_file_path (在这里只是在黑暗中扔飞镖)我得到一个 IOError:
[Errno 2] 没有这样的文件或目录:'bound method TemporaryUploadedFile.temporary_file_path of >'
我意识到temporary_file_path 是我正在寻找的解决方案,我只是不知道如何使用它,而且在这个特定情况下,文档和谷歌似乎都没有太大帮助。
python - Django ImageField/FileField 使用模型的 pk 保存上传的文件
我正在转换一个旧站点(最初是用 rails 编写的),默认情况下,图像是使用该格式保存的{{pk}}.{{extension}}
,如果上传了新文件,该文件总是会被覆盖。我想用这个 django 版本继续这种格式。
我最初认为扩展 FileSystemStorage 是一种方法,但我不知道将当前模型对象传递给它的方法。有人对“django 方式”有什么建议吗?
如果我需要编写自己的扩展类ImageField
来管理它,那就这样吧。:) 只是想知道我是否缺少一些简单的东西。
[编辑]我做了什么,基于surfeurx和DrTyrsa 的回答:
我现在遇到的真正问题是我希望它覆盖图像。这将提供正确的文件名,但看起来我将不得不扩展ImageField
以使其覆盖。找到了这个小家伙:http ://djangosnippets.org/snippets/636/