# jquery # form表单上传文件
form表单上传文件
<form action="/upload/" method="post" enctype="multipart/form-data"> 头像: <input type="file" name="head-pic"> 用户名: <input type="text" name="username"> <input type="submit"> </form> views: def upload(request): if request.method=="GET": return render(request,'upload.html') else: print(request.POST) #拿到的是post请求的数据,但是文件相关数据需要用request.FELES去拿 print(request.FILES) #<MultiValueDict: {'head-pic': [<InMemoryUploadedFile: p2.jpg (image/jpeg)>]}> file_obj=request.FILES.get('head-pic') print(file_obj) print(file_obj.name) file_name=file_obj.name import os path=os.path.join(settings.BASE_DIR,'static','img',file_name) with open(path,'wb') as f: for i in file_obj: f.write(i) # f=open('xx.txt','rb') # with open('xx.txt','wb') as f2: # for i in f: # f2.write(i) return HttpResponse('ok')
在settings.py
#上文件的目录 MEDIA_URL = '/media/' MEDIA_ROOT = os.path.join(BASE_DIR,'media')
from django.contrib import admin from django.urls import path, include from . import views from django.conf import settings from django.conf.urls.static import static urlpatterns = [ path('admin/', admin.site.urls), path('upload/', include('upload_app.urls')), ] #文件上传的路径 urlpatterns += static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)
以下代码都在uoload_app
目录下
3.1、models.py
这里的模型文件的picture会直接映射
from django.db import models # Create your models here. class Content(models.Model): title = models.FileField('文章名称',max_length=11) picture = models.FileField(upload_to='picture')
3.2、views.py
from django.http import HttpResponse from django.shortcuts import render # Create your views here. #上传文件 from upload_app.models import Content def test_upload(request): if request.method == 'GET': return render(request, 'upload_app/test_upload.html') elif request.method == 'POST': title = request.POST['title'] myfile = request.FILES['myfile'] Content.objects.create(title=title,picture=myfile) return HttpResponse('----上传成功!')
from django.urls import path from . import views urlpatterns = [ path('upload', views.test_upload), ]
<form action="" method="post" enctype="multipart/form-data"> {% csrf_token %} <p><input type="text" name="title"></p> <p> <input type="file" name="myfile"></p> <p><input type="submit"></p> </form>
<form action="" method="post" enctype="multipart/form-data"> {% csrf_token %} <p><input type="text" name="title"></p> <p> <input type="file" name="myfile"></p> <p><input type="submit"></p> </form>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现