python-前端页面上传文件到指定路径
小贴士
本文是在windows通过python语言,实现前端页面上传文件到我们本地的指定路径,如在liunux环境进行实现,则参考本公众号上一篇文章在linux首先搭建python以及django环境
- 首先我们得具备Django环境+python
-在django目录下创建我们的项目project01
-在项目下创建我们的应用app01
-工程、项目创建完成之后,接着我们在应用目录下创建file目录放置我们的前端页面文件index.html
<!DOCTYPE html>
<head>
<title>生成二维码</title>
</head>
<body>
<form method='post' action='/sub/' enctype="multipart/form-data">
<p>网址:<input type='text' name='website' value='http://'></p>
<br>请上传图片:<br>
<input type="file" name="myfile"><br>
<button type="submit">提交</button>
{% csrf_token %}
</form>
</body>
-然后在编辑我们的视图文件views.py文件
注:from_future首行文件必须放在首行
* ./%s指的的当前目录下的转化成字符
from __future__ import unicode_literals
from django.utils.six import BytesIO
from MyQR import myqr
from django.http import HttpResponse
from django.shortcuts import render
import os
import random
def home(request):
return render(request,'index.html')
def generate_Image(request):
#获取上传的地址
website = request.POST.get('website')
# 请求方法为POST时,进行处理
if request.method == "POST":
# 获取上传的文件,如果没有文件,则默认为None
File = request.FILES.get("myfile", None)
if File is None:
return HttpResponse("没有需要上传的文件")
else:
# 打开特定的文件进行二进制的写操作
# print(os.path.exists('/temp_file/'))
with open("./%s" % File.name, 'wb+') as f:
# 分块写入文件
for chunk in File.chunks():
f.write(chunk)
version, level, qr_name = myqr.run(
words=website, # 可以是字符串,也可以是网址(前面要加http(s)://)
version=1, # 设置容错率为最高
level='H', # 控制纠错水平,范围是L、M、Q、H,从左到右依次升高
picture="./%s" % File.name, # 将二维码和图片合成
colorized=True, # 彩色二维码
contrast=1.0, # 用以调节图片的对比度,1.0 表示原始图片,更小的值表示更低对比度,更大反之。默认为1.0
brightness=1.0, # 用来调节图片的亮度,其余用法和取值同上
save_name="./%s" % "s" + File.name, # 保存文件的名字,格式可以是jpg,png,bmp,gif
save_dir=os.getcwd() # 控制位置
)
return HttpResponse(File.name)
-编辑我们的urls视图文件
from django.conf.urls import url
from django.contrib import admin
from app import views as t_views
urlpatterns = [
url(r'^$',t_views.home),
url(r'^sub/',t_views.generate_Image),
url(r'^admin/', admin.site.urls),
]
-编辑settings.py将我们的app01app添加进去
进行添加这个'app',
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app',
]