django上传文件,查询到的资料都是用的django自己的models.Model类,去定义一个FileField类型的存储文件,并且在里面加一句upload_to,如下所示:
 
但是如果用mongodb,虽然Document有FileField类型,但是没有upload_to这个参数,所以写了一个方法去将POST里面的文件存储到本地
 
存储文件的方法如下:
def uploaded_file(f,filename):
address ='C:/Users/XXXX/Desktop/'+filename
destination = open(address, 'wb+')
for chunk in f.chunks():
destination.write(chunk)
destination.close()
注方法说明:参数f为POST的FILES文件,filename为要存储的文件名,之所以没有用一个固定的地址,是因为上传的文件类型是不定的,可能还txt,也可能是jpg等
html模板里的上传代码:

<form id="formid" method="POST" action="" enctype="multipart/form-data">
<div class="file-box">
<input type='text' name='protextfield' id='protextfield' class='txt' />
<input type='button' class='btn' value='浏览...' />
<input type="file" name="proupload" class="file" id="fileField" size="28" onchange="document.getElementById('protextfield').value=this.value" />
<input type="submit" name="submit" class="btn" value="上传" />
</div>
</form>
模板注意点:form必须加enctype="multipart/form-data",否则不能传送文件。
 
在view.py里调用该方法执行的上传操作
def newproject(request):
if request.FILES:
filename =request.FILES['proupload'].name
uploaded_file(request.FILES['proupload'],filename)
post.proadress = filename
return render_to_response('XXX.html', locals())
说明:上面的方法中的filename是获得了上传的文件名,包括文件后缀,例如test.txt。request.FILES['proupload']是获得了名字为proupload的文件。这么做的结果就是将上传的文件存储到了一个本地固定的位置,并存储了文件名到数据库里。
 
 
其他说明:目前没有做下载,但是下一步思路是想将所有文件固定存储到一个文件夹里,或者按后缀去分开存储,然后下载的时候按照文件名在存储文件夹里遍历,取出要找的文件进行下载。

django MongoDB上传文件的更多相关文章

  1. django 实现上传文件功能

    需求:自己写一个文件上传功能 代码: urls.py from django.conf.urls import url from django.contrib import admin from ap ...

  2. Django设置上传文件夹

    django提供了两种字段类型models.FileField与models.ImageField,用于保存上传文件与图象.这两类字段提供了一个参数'upload_to',用于定义上传文件保存的路径( ...

  3. django处理上传文件配置

    1.sttings中配置 'django.template.context_processors.media' TEMPLATES = [ { 'BACKEND': 'django.template. ...

  4. django 用户上传文件media的存储访问配置1

    1. 首先新建文件夹media  后 在项目setting中具体配置: MEDIA_URL = '/media/' MEDIA_ROOT = os.path.join(BASE_DIR, 'media ...

  5. Django:上传文件或者图片时request.FILES的值为空

    在form表单中加上属性 enctype="multipart/form-data"

  6. python django 批量上传文件并绑定对应文件的描述

  7. Django session cookie 上传文件、详解

    session 在这里先说session 配置URL from django.conf.urls import patterns, include, url from django.contrib i ...

  8. 实现简单的django上传文件

    本文用django实现上传文件并保存到指定路径下,没有使用forms和models,步骤如下: 1.在模板中使用form表单,因为这个表单使用于上传文件的,所以method属性必须设置为post,而且 ...

  9. django实现分片上传文件

    目标:利用django实现上传文件功能 1,先设置路由系统 urls.py from django.conf.urls import url,include from django.contrib i ...

随机推荐

  1. nginx和apache最核心的区别在于apache是同步多进程模型,一个连接对应一个进程;nginx是异步的,多个连接(万级别)可以对应一个进程

    nginx和apache的一些优缺点比较,摘自网络,加自己的一些整理. nginx相对于apache的优点: 1.轻量级,同样是web 服务,比apache 占用更少的内存及资源 2.抗并发,ngin ...

  2. sqoop操作之HDFS导出到ORACLE

    注意:在导出前需要先创建待导出的表结构.如果导出的表在数据库中不存在则会报错:如果重复导出多次,表中的数据会重复: ; ; 导出表的所有字段 sqoop export --connect jdbc:o ...

  3. WinRAR 代码执行漏洞复现

    影响版本: WinRAR < 5.70 Beta 1 Bandizip    < = 6.2.0.0 好压(2345压缩)    < = 5.9.8.10907 360压缩    & ...

  4. 代码生成器 CodeSmith 的使用(四)

    在上一篇的版本中,我们生成了数据库中的字段,使生成的属性更加简洁,可读性也提高了很多,但都是钍对一个数据库的单个表,如果要将数据库中的所有 的表都生成相应的类,表中的字段也都生成属性,运行一次就可以将 ...

  5. JavaScript中的数组和字符串

    知识内容: 1.JavaScript中的数组 2.JavaScript中的字符串 一.JavaScript中的数组 1.JavaScript中的数组是什么 数组指的是数据的有序列表,每种语言基本上都有 ...

  6. 用dataset保存数据注意的问题

    Private Function Save() As Boolean Try Dim dschgs As DataSet = ds.GetChanges(DataRowState.Added + Da ...

  7. selenium自动化测试遇到的问题积累--持续积累中

    引言: 在做UI自动化测试过程中,总是会遇到各种问题,而解决问题总是会花费一些时间和心思,但是解决后对于自己就是一种成长,持续积累,当可能遇到的问题都被你遇到过,并且都知道解决办法,这就是一种经验的价 ...

  8. C语言键盘按键无阻塞侦测:kbhit()

    http://www.360doc.com/content/12/0414/09/1317564_203474440.shtml kbhit in c kbhit in c: kbhit functi ...

  9. python post提交数据

     使用utf8编码,value是上传的值 1.上传经纬度等数据http://112.74.44.47/VehicleWeb/Acceleration?gps=gpsValue&accelera ...

  10. python实现一个栏目的分页抓取列表页抓取

    python实现一个栏目的分页抓取列表页抓取 #!/usr/bin/env python # coding=utf-8 import requests from bs4 import Beautifu ...