0

我对 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')
4

1 回答 1

0

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

看到这个问题。您无法自动获取文件路径基本上是一个安全原因。如何在更改 <input type='file'> 时获取所选文件的完整路径 使用javascript,jquery-ajax?

于 2013-10-10T21:29:54.050 回答