django上传图片另存到指定位置

前端上传的图片是用formData上传的

第一步

这里主要是记录下后端:
先到settings.py里加入这两句
os.path.dirname(_file_)作用是拿到当前运行文件的目录
比如说你的django项目的manage.py文件在 D://Hello/hello/manage.py这个位置,那么os.path.dirname(_file_)返回的就是D://Hello/hello/这个目录路径。
os.path.abspath(path)它的意思就是取你给它传的路径的绝对路径
所以第一句配置就清楚了,就是找到django项目manage.py文件所在的目录。
os.path.join(path,str)的意思是把path与str以系统路径的方式连接起来,加入path还是D://Hello/hello/,str是uplodFile,那么这个返回的就是D://Hello/hello/uploadFile/

PROJECT_PATH = os.path.abspath(os.path.dirname(__file__))
MEDIA_ROOT = os.path.join(PROJECT_PATH, 'uploadFile/').replace('\\', '/')

在这里插入图片描述
注意,设置完成之后,去你的项目manage.py所在的目录下新建一个·uploadFile文件夹

第二步

然后现在转到你的app中的views.py中继续编写。
给出整个功能的代码,代码都有注释

# 上传文件
def upload(request):
  if request.method == "POST":                                   #判断请求方式,文件上传一般都是post方式
    img = request.FILES.get('file')                              # 获取你上传的文件对象
    imgname = str(uuid.uuid1())+os.path.splitext(img._name)[1]   #生成一个唯一的字符串做文件名,给文件重新命名的
    savename = os.path.join(os.getcwd(),'uploadFile')            #os.getcwd()当前工作目录,就是manage.py的目录
    savename = os.path.join(savename,imgname)                    #os.path.join作用是把两个参数当系统路径连接起来
    if img:                                                                    
      with open(savename,'wb') as f:                             #w是写,b是二进制,以wb方式打开文件,是往文件写入二进制数据
        f.write(img.read())
    else:
      imgname=''
    return HttpResponse("ok")                                    #如果能够返回ok,就应该是成功了,uploadFile文件夹下应该就有文件了

如果有什么错误,请批评指教

要实现批量上传图片指定路径中,可以使用Django自带的FileField和ModelForm组合来完成。具体步骤如下: 1.在models.py中定义一个模型类,其中包含一个FileField类型的字段,用于存储上传图片文件,例如: ```python from django.db import models class Upload(models.Model): img = models.FileField(upload_to='uploads/') ``` 2.在forms.py中定义一个ModelForm类,用于处理上传的表单数据,并将其保存到数据库中,例如: ```python from django import forms from .models import Upload class UploadForm(forms.ModelForm): class Meta: model = Upload fields = ('img',) ``` 3.在views.py中定义一个视图函数,用于接收用户提交的表单数据,并将上传图片保存指定路径中,例如: ```python from django.shortcuts import render from .forms import UploadForm def upload(request): if request.method == 'POST': form = UploadForm(request.POST, request.FILES) if form.is_valid(): instance = form.save(commit=False) instance.save() return render(request, 'upload_success.html') else: form = UploadForm() return render(request, 'upload.html', {'form': form}) ``` 4.在upload.html模板中定义一个表单,用于上传图片文件,并将其提交到视图函数中处理,例如: ```html <form method="post" enctype="multipart/form-data"> {% csrf_token %} {{ form.as_p }} <button type="submit">上传</button> </form> ``` 5.在settings.py中设置MEDIA_ROOT和MEDIA_URL,用于指定上传文件的存储路径和访问路径,例如: ```python MEDIA_ROOT = os.path.join(BASE_DIR, 'media') MEDIA_URL = '/media/' ``` 6.最后,需要在项目的urls.py中添加一个URL模式,用于将上传文件的访问路径映射到MEDIA_ROOT下的实际文件路径,例如: ```python from django.conf.urls.static import static from django.conf import settings urlpatterns = [ # ... ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) ``` 这样就可以实现批量上传图片指定路径中了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值