python 文件上传本地服务器

1:python之上传文件

1.1.url代码

 

"""untitled1222 URL Configuration
  
  The `urlpatterns` list routes URLs to views. For more information please see:
      https://docs.djangoproject.com/en/2.1/topics/http/urls/
  Examples:
  Function views
      1. Add an import:  from my_app import views
      2. Add a URL to urlpatterns:  path('', views.home, name='home')
  Class-based views
     1. Add an import:  from other_app.views import Home
     2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
 Including another URLconf
     1. Import the include() function: from django.urls import include, path
     2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
 """
 from django.contrib import admin
 from django.urls import path
 from app01 import views
 urlpatterns = [
     path('admin/', admin.site.urls),
     path('upload/',views.upload),
 ]

 

1.2.views代码

from django.shortcuts import render
  from django.shortcuts import HttpResponse
  
  # Create your views here.
  def upload(request):
      if request.method=='GET':
          return render(request,'upload.html')
      else:
          user=request.POST.get('user')
         print(user)
         #img是一个对象,包含文件名,文件大小、内容....
         img=request.FILES.get('img')
         print(img)
         print(img.name)
         print(img.size)
 
         #上传到本地服务器
         f=open(img.name,'wb')
         for line in img.chunks():
             f.write(line)
         f.close()
 
         return HttpResponse('OK')

 

 

 

1.3.templates中upload.html

<!DOCTYPE html>
  <html lang="en">
  <head>
      <meta charset="UTF-8">
      <title>Title</title>
  </head>
  <body>
  <form action="/upload/" method="post" enctype="multipart/form-data">
      <input type="text" name="user">
      <input type="file" name="img">
     <input type="submit" value="提交">
  </form>
  </body>
  </html>

 

 

1.4.效果显示

 

2.上传文件按钮优化

2.1按钮优化只需在原有upload.html文件中进行相关样式设置即可,重点设置透明度:opacity:0

 

 1 
<!DOCTYPE html>
  <html lang="en">
  <head>
      <meta charset="UTF-8">
      <title>Title</title>
  </head>
  <body>
  <form action="/upload/" method="post" enctype="multipart/form-data">
      <input type="text" name="user">
     <div style="position: relative;">
         <a>上传</a>
     <input type="file" name="img" style="opacity: 0.2;position:absolute; top:0;left: 0;">
     </div>
     <input type="submit" value="提交">
 </form>
 <script src="/static/jquery-3.3.1.min.js"></script>
 </body>
 </html>

 

2.2.优化后的效果显示:

 

3.python之Form组件文件上传(与上述自定义上传文件的区别在:form上传文件多了验证功能)

 

 1 from django.shortcuts import render
 2 from django.shortcuts import HttpResponse
 3 
 4 
 5 # Create your views here.
 6 from django import forms
 7 from django.forms import fields
 8 #from组件形式的文件上传
 9 class UploadImg(forms.Form):
10     user=fields.CharField()
11     img=fields.FileField()
12     
13     
14 def upload(request):
15     if request.method=='GET':
16         return render(request,'upload.html')
17     else:
18         OBJ=UploadImg(request.POST,request.FILES)
19         if OBJ.is_valid():
20             user=OBJ.cleaned_data['user']
21             img=OBJ.cleaned_data['img']
22             f = open(img.name, 'wb')
23             for line in img.chunks():
24                 f.write(line)
25             f.close()
26         #自定义形式文件上传
27         # def upload(request):
28         #     if request.method == 'GET':
29         #         return render(request, 'upload.html')
30         #     else:
31         #         user=request.POST.get('user')
32         #         print(user)
33         #         #img是一个对象,包含文件名,文件大小、内容....
34         #         img=request.FILES.get('img')
35         #         print(img)
36         #         print(img.name)
37         #         print(size)
38         #         f = open(img.name, 'wb')
39         #         for line in img.chunks():
40         #             f.write(line)
41         #         f.close()
42         #         return HttpResponse('OK')
43         return HttpResponse('OK')

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值