在Django 1.3中,用户上传一个“hello world”应用程序所需的最少示例代码是什么?
当前回答
以亨利为例:
import tempfile
import shutil
FILE_UPLOAD_DIR = '/home/imran/uploads'
def handle_uploaded_file(source):
fd, filepath = tempfile.mkstemp(prefix=source.name, dir=FILE_UPLOAD_DIR)
with open(filepath, 'wb') as dest:
shutil.copyfileobj(source, dest)
return filepath
你可以在上传文件对象的视图中调用handle_uploaded_file函数。这将在文件系统中保存具有唯一名称的文件(以原始上传文件的文件名作为前缀),并返回所保存文件的完整路径。您可以将该路径保存在数据库中,稍后对该文件进行处理。
其他回答
它可能会帮助你: 在models.py中创建一个文件字段
上传文件(在admin.py中):
def save_model(self, request, obj, form, change):
url = "http://img.youtube.com/vi/%s/hqdefault.jpg" %(obj.video)
url = str(url)
if url:
temp_img = NamedTemporaryFile(delete=True)
temp_img.write(urllib2.urlopen(url).read())
temp_img.flush()
filename_img = urlparse(url).path.split('/')[-1]
obj.image.save(filename_img,File(temp_img)
并在模板中使用该字段。
不确定这种方法是否有任何缺点,但更小,在views.py中:
entry = form.save()
# save uploaded file
if request.FILES['myfile']:
entry.myfile.save(request.FILES['myfile']._name, request.FILES['myfile'], True)
以亨利为例:
import tempfile
import shutil
FILE_UPLOAD_DIR = '/home/imran/uploads'
def handle_uploaded_file(source):
fd, filepath = tempfile.mkstemp(prefix=source.name, dir=FILE_UPLOAD_DIR)
with open(filepath, 'wb') as dest:
shutil.copyfileobj(source, dest)
return filepath
你可以在上传文件对象的视图中调用handle_uploaded_file函数。这将在文件系统中保存具有唯一名称的文件(以原始上传文件的文件名作为前缀),并返回所保存文件的完整路径。您可以将该路径保存在数据库中,稍后对该文件进行处理。
我必须说我发现django的文档令人困惑。 还有一个最简单的例子,为什么要提到表单? 我在views.py中工作的例子是:-
for key, file in request.FILES.items():
path = file.name
dest = open(path, 'w')
if file.multiple_chunks:
for c in file.chunks():
dest.write(c)
else:
dest.write(file.read())
dest.close()
html文件看起来像下面的代码,尽管这个例子只上传了一个文件,保存文件的代码处理许多:-
<form action="/upload_file/" method="post" enctype="multipart/form-data">{% csrf_token %}
<label for="file">Filename:</label>
<input type="file" name="file" id="file" />
<br />
<input type="submit" name="submit" value="Submit" />
</form>
这些示例不是我的代码,它们是从我找到的其他两个示例中选取的。 我是一个相对初学者django,所以很可能我错过了一些关键点。
我也有类似的要求。网上的大多数例子都要求创建模型和表单,我不想使用。这是我的最终代码。
if request.method == 'POST':
file1 = request.FILES['file']
contentOfFile = file1.read()
if file1:
return render(request, 'blogapp/Statistics.html', {'file': file1, 'contentOfFile': contentOfFile})
在HTML中我写了:
{% block content %}
<h1>File content</h1>
<form action="{% url 'blogapp:uploadComplete'%}" method="post" enctype="multipart/form-data">
{% csrf_token %}
<input id="uploadbutton" type="file" value="Browse" name="file" accept="text/csv" />
<input type="submit" value="Upload" />
</form>
{% endblock %}
下面是显示文件内容的HTML:
{% block content %}
<h3>File uploaded successfully</h3>
{{file.name}}
</br>content = {{contentOfFile}}
{% endblock %}
推荐文章
- django MultiValueDictKeyError错误,我如何处理它
- 我如何在Django中创建一个鼻涕虫?
- 没有名为'django.core.urlresolvers'的模块
- Django - makemigrations -未检测到任何更改
- ">", "<", ">=" 和“< =”不工作”在Django过滤()”
- 从包含文件名的路径获取不包含文件名的完整路径
- Git:从另一个分支复制目录中的所有文件
- PHP,获取没有文件扩展名的文件名
- Django项目工作目录结构的最佳实践
- 如何在远程系统上使用Ansible任务移动/重命名文件
- 如何在Django中表达一对多关系?
- 用Django创建电子邮件模板
- 从java.io.File获取java.nio.file.Path对象
- 用c#编写数据到CSV文件
- 安卓系统;检查文件是否存在而不创建新的文件