Django:仅提交从模板文件选择器中选择的文件的文件路径

时间:2013-10-10 21:18:47

标签: django django-forms django-templates

我是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')

1 个答案:

答案 0 :(得分:0)

docfileFileField,它输出<input type="file">用户的文件系统路径,永远不会从表单提交文件。只有文件的名称和扩展名。如果你真的需要文件在用户计算机上的位置,(不知道为什么你需要它),我的建议就是只有另一个表格,其中有一个普通的<input type="text">用户只需输入文字。我知道它不优雅,但据我所知它是唯一的方法。更好的建议是重新思考是否真的需要用户的路径。

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

相关问题