使用 JavaScript 和 Django 将文本文件上传到服务器中的某个文件夹
using javascript and django to upload a text file to some folder in server
我需要上传一个包含一些数据的文本文件,从我的local filesystem
说{{MEDIA_URL}}/uploadfolder
。此文件将由我的django
视图中的函数之一处理。
我在 html 页面中创建了一个<input type="file" id="fselect" >
。我创建了一个javascript文件,我试图在其中调用上传函数,如下所示
$(document).ready(function(){
...
$('#fselect').change(function(){
file=$('#fselect').get(0).files[0];
uploadFile(file);
}
});
当我使用萤火虫时,并尝试
file=$('#fselect').get(0).files[0]
我能够获取 File 对象,它是使用输入元素选择的文本文件。如何使用此文件对象调用 django 视图?在 django 视图中,这个 File 对象会是什么数据类型?
def storeAndProcessFile(request,file):
pass
在我进入任何javascript之前,首先你应该了解文件通常是如何使用Django上传和处理的。请考虑以下 html 表单:
<form method="post" action="/foo/url/">
<input type="file" name="foofile">
<input type="submit" value="Upload">
</form>
因此,当用户单击提交按钮时,浏览器将使用HTTP方法POST
将该文件上传到/foo/url/
。然后在 Django 的服务器端,url /foo/url/
将被映射到某个视图。在您的情况下,它将是 storeAndProcessFile
.因此,视图需要做的是获取上传的文件并将其存储到磁盘(或者可能是其他存储系统(。
现在,视图不会像您在问题中显示的那样将文件作为其函数参数之一获取。这是因为 GET、POST 和 FILE 数据是如何在 HTTP 请求中传递的。因此,该文件实际上是视图中request
参数的一部分。您可以通过 request.FILES['foofile']
引用该文件。
若要仅将文件存储到磁盘,视图可能如下所示:
def storeAndProcessFile(request):
# make sure the the request method is POST
if request.method != 'POST':
return HttpResponseBadRequest('Only POST requests are allowed')
# now get the uploaded file
file = request.FILES['foofile']
# the file is going to be an instance of UploadedFile
with open('/destination/path/%s' % file.name, 'wb+') as dest:
for chunk in file.chunks():
dest.write(chunk)
# return success message
return HttpResponse('File uploaded')
这段代码几乎不在 Django 文档中。如果您想了解更多信息,可以在此处阅读。
至于Javascript,有大量的jQuery插件可以使用ajax甚至一次上传多个文件。我真的很喜欢这个图书馆。它具有许多功能,包括发送多个文件。但是,如果这太多了,您可以搜索jQuery文件上传插件,并且有很多,但我最近没有测试任何其他插件,因此无法给出任何建议。
然而,在向 Django 站点发出 ajax 请求时,有一件事要记住,那就是 CSRF。从 Django 1.2.5 开始,他们改变了 CSRF 的验证方式,这可能会破坏许多上传库。如果你不需要担心它,你可以随时添加csrf_exempt
装饰器:
from django.views.decorators.csrf import csrf_exempt
@csrf_exempt
def storeAndProcessFile(request):
...
但是,如果您需要 CSRF,您可以在此处查看将 jQuery 文件上传器与启用的 CSRF 集成的示例实现。
- Meteor发布/订阅无法从服务器文件夹中运行
- 当通过Node.js服务器访问时,Javascript文件在Chrome上工作,但从文件夹打开时不工作
- 如何从本地文件夹(磁盘存储)读取或获取图像文件,并使用nodejs服务器将其发送到Angularjs
- javascript如何从服务器获取文件夹中文件的url
- 我正在尝试将javascript文本框的输入保存回服务器.我想从保存的弹出文本框中获得输入,以重命名文件夹
- JS脚本文件夹,而不是“;脚本”;在服务器ASP.NETMVC上部署后不可见
- 是否可以在不使用任何 severside 脚本语言的情况下将图像上传到服务器文件夹
- 如何使用它的相对路径访问tomcat服务器中的文件夹
- 将文件夹上传到服务器(mvc spring)
- 使用 JavaScript 和 Django 将文本文件上传到服务器中的某个文件夹
- 将文件夹上传到服务器
- 如何在没有服务器的情况下运行 HTML 时将文件夹设置为根路径
- 对于 Node Js 服务器,如何从不同的文件夹引用静态 html 文件
- 来自服务器映像文件夹的 JSP HTML 图像选框
- 如何从 URL 中的节点.js服务器文件夹获取图像
- 我的node.js简单web服务器没有'无法访问父文件夹
- 如何将base64映像存储到数据库和我的服务器文件夹中
- 加载一个托管在应用中与web服务器一起暴露的资产文件夹中的图像文件
- 如何使用PHP从服务器文件夹中检索文件,并使用javascript在网页上显示/下载它
- 将文件从服务器文件夹下载到客户端pc