问题标签 [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.

0 投票
1 回答
1868 浏览

django - 将文件从保存的 FileField 复制到 Django 中的 UploadedFile

我需要保存文件,不是来自 request.FILES,而是来自另一个保存的记录。

这是模型记录的代码:

以及视图(在本例MyForm中是保存到 RealRecord 的模型表单):

所以这个东西基本上是一个FieldFile被用作UploadedFile对象的东西。

每个Foo人都有一个带有名字的FooFile记录awesome_file和另一个带有名字的记录,mediocre_fileRealRecord.

疯狂的是,这完全验证了。但是,问题在于,在创建的结果记录中,awesome_file 和 mediocre_file 的路径都在“foo_folder”中。但我不希望“foo_folder”中的文件,我希望它们位于我为RealRecord.

所以我想我想知道我可以对FieldFile来自的值做些什么,FooField以便它们表现得像传统的 UploadedFile 并获取它们各自字段的upload_to和值。path

0 投票
1 回答
4647 浏览

django - Django(音频)文件验证

我正在试验一个允许用户上传音频文件的网站。我已经阅读了所有可以使用的文档,但找不到太多关于验证文件的信息。

这里的总新手(以前从未做过任何类型的文件验证)并试图弄清楚这一点。有人可以握住我的手,告诉我我需要知道什么吗?

与往常一样,提前感谢您。

0 投票
1 回答
149 浏览

django - 这是确保删除与模型关联的 FileField 的方法吗?

当我删除具有 FileField 的模型实例时,实际文件将留在我的 MEDIA_ROOT 文件夹中。为了解决这个问题,我正在监听 post_delete 信号,并这样做:

它似乎工作正常,但我不确定这样做是否是最佳做法。有什么想法吗?

0 投票
1 回答
849 浏览

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。其中_savename是目的地的相对路径,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应该如何/何时被激活?我在这里看到了不匹配。这是一个错误吗?谁能澄清一下?

0 投票
1 回答
182 浏览

python - 如何在 Django 中更改对象的 FileField?

我有一个名为 ClassFile 的模型,它采用 FileField(文档):

提交文件上传表单后尝试保存以下 ClassFile 实例失败,因为 request.FILES['file'] 显然不存在:

我想知道我是否以正确的方式保存了这个对象。request.FILES['file'] 的类型是否正确?谢谢你。

0 投票
1 回答
1211 浏览

django - 在 Django 中,如何访问 forms.py 中的文件字段?

我的 Django 应用程序的 forms.py 中有这个表单类:

我想通过一个干净的函数访问在 forms.py 中上传的文件以验证其名称。

但是,问题是错误提示在“QueryDict”中找不到“附件”。我将 request.FILES 绑定到提交表单。我还在我的表单上使用 enctype="multipart/form-data" 。我想知道在 forms.py 中访问 FileField 数据的正确方法是什么。

谢谢你。

0 投票
8 回答
28563 浏览

django - 如何使用 FileFields 限制 ModelForms 文件上传的文件类型?

我的目标是将 Django ModelForm 上的 FileField 限制为 PDF 和 Word 文档。我用谷歌搜索的答案都是关于创建一个单独的文件处理程序,但我不确定如何在 ModelForm 的上下文中这样做。settings.py 中是否有我可以用来限制上传文件类型的设置?

0 投票
2 回答
1369 浏览

django - 为什么我的文件不能保存到实例(它保存到磁盘...)?

我可以让我的文件保存到我告诉它的磁盘,但不能让它保存到实例,我一点也不知道为什么!

模型.py

视图.py

处理上传文件

song_upload.html(相关部分)

表格.py

该文件就在媒体/上传/音乐中,但在管理员中,audio_file 是空白的,如果我为 audio_file 设置空白 = False(这是我想要做的),我被告知此字段是必需的。是什么赋予了??

提前致谢!现在已经有一段时间了,文档对我来说似乎很轻松(newb)。

0 投票
1 回答
8502 浏览

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 是我正在寻找的解决方案,我只是不知道如何使用它,而且在这个特定情况下,文档和谷歌似乎都没有太大帮助。

0 投票
2 回答
3609 浏览

python - Django ImageField/FileField 使用模型的 pk 保存上传的文件

我正在转换一个旧站点(最初是用 rails 编写的),默认情况下,图像是使用该格式保存的{{pk}}.{{extension}},如果上传了新文件,该文件总是会被覆盖。我想用这个 django 版本继续这种格式。

我最初认为扩展 FileSystemStorage 是一种方法,但我不知道将当前模型对象传递给它的方法。有人对“django 方式”有什么建议吗?

如果我需要编写自己的扩展类ImageField来管理它,那就这样吧。:) 只是想知道我是否缺少一些简单的东西。

[编辑]我做了什么,基于surfeurxDrTyrsa 的回答

我现在遇到的真正问题是我希望它覆盖图像。这将提供正确的文件名,但看起来我将不得不扩展ImageField以使其覆盖。找到了这个小家伙:http ://djangosnippets.org/snippets/636/