django 上传文件夹_django 实现上传文件功能

需求:自己写一个文件上传功能

代码:

urls.py

from django.conf.urls import url

from django.contrib import admin

from app01 import views

urlpatterns = [

url(r'^admin/', admin.site.urls),

url(r'^upload.html$', views.upload),

]

views.py

from django.shortcuts import render

from django.shortcuts import redirect

from django.shortcuts import HttpResponse

from app01 import models

import os

#实现文件上传功能

def upload(request):

if request.method == 'GET':

return render(request,'upload.html')

elif request.method == 'POST':

obj = request.FILES.get('fafafa')

f = open(os.path.join('upload',obj.name),'wb')

for line in obj.chunks():

f.write(line)

f.close()

return HttpResponse('上传成功')

upload.html

Title

{% csrf_token %}

运行结果:

文件上传:

-普通上传

-自定义页面上传按钮

-基于Form做上传

-Ajax上传文件(后补)

升级版

settings.py

STATIC_URL = '/static/'

STATICFILES_DIRS = (

os.path.join(BASE_DIR,'static'),

)

urls.py

from django.conf.urls import url

from django.contrib import admin

from app01 import views

urlpatterns = [

url(r'^admin/', admin.site.urls),

url(r'^upload.html$', views.upload),

]

views.py

from django.shortcuts import render

from django.shortcuts import HttpResponse

from django.forms import fields

from django import forms

class UploadForm(forms.Form):

user = fields.CharField()

img = fields.FileField()

def upload(request):

if request.method == 'GET':

return render(request,'upload.html')

else:

# obj = UploadForm(request.POST,request.FILES)

# if obj.is_valid():

# user = obj.cleaned_data['user']

# img = obj.cleaned_data['img']

user = request.POST.get('user')

img = request.FILES.get('img')

# img是对象(文件大小,文件名称,文件内容。。。)

print(img.name)

print(img.size)

f = open(img.name,'wb')

for line in img.chunks():

f.write(line)

f.close()

return HttpResponse('...')

upload.html

Title

{% csrf_token %}

NB上传

运行效果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值