【问题标题】:Django: Submit only the file path for a file selected from a template file chooserDjango:仅提交从模板文件选择器中选择的文件的文件路径
【发布时间】:2013-10-10 21:18:46
【问题描述】:

我对 Django 还很陌生。我创建了一个简单的模板页面来测试我正在编写的服务。 该服务做两件事 - 通过 POST 接受文件,并通过 POST 接受文件的字符串路径。这更像是一个模板问题。

我已经弄清楚了如何发送文件内容本身,但是在没有模板页面的文件数据的情况下发送文件路径是我无法解决的问题。模板页面文件路径提交的操作应该和文件提交一样:用户选择一个文件,点击提交,但只提交文本路径,不提交文件数据。

感谢任何帮助!

<h1>File Upload</h1>
<form action="upload/file/" method="post" enctype="multipart/form-data">
<p>{{ form.non_field_errors }}</p>
<p>{{ form.docfile.label_tag }} {{ form.docfile.help_text }}</p>
<p>
{{ form.docfile.errors }}
{{ form.docfile }}
<p><input type="submit" value="Upload" />
</form>
<br>
<h1>Path Upload</h1>
<form action="upload/path/" method="post" enctype="application/x-www-form-urlencoded">
<p>{{ form.non_field_errors }}</p>
<p>{{ form.docfile.label_tag }} {{ form.docfile.help_text }}</p>
<p>
{{ form.docfile.errors }}
{{ form.docfile }}
<p><input type="submit" value="Upload" />
</form>
</body>
</html>

如果有人想看看,我正在使用的 forms.py。

from django import forms

class UploadFileForm(forms.Form):
docfile = forms.FileField(
    label='Select a file',
    help_text='max. 42 megabytes')

【问题讨论】:

    标签: django django-forms django-templates


    【解决方案1】:

    docfile 是一个FileField,它输出一个&lt;input type="file"&gt; 用户的文件系统路径永远不会从表单提交。只有文件的名称和扩展名。如果您真的需要用户计算机上的文件位置,(不知道为什么需要它)我的建议是使用另一个带有常规&lt;input type="text"&gt; 的表单,用户只需输入文本即可。我知道它不是优雅,但据我所知,这是唯一的方法。更好的建议是重新考虑您是否真的需要用户路径。

    看到这个问题。您无法自动获取文件路径基本上是一个安全原因。 How to get full path of selected file on change of <input type=‘file’> using javascript, jquery-ajax?

    【讨论】:

    • 因为对于服务接受文件还是路径的要求不清楚,所以我决定两者都做以掩饰自己。我将创建另一个带有输入的表单,然后尝试一下。谢谢您的回复
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-06
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 2020-04-30
    相关资源
    最近更新 更多