Django接收照片储存文件的实例代码


Posted in Python onMarch 07, 2020

后端:

from rest_framework.views import APIView
from car import settings
from django.shortcuts import render, redirect, HttpResponse
from dal import models
from django.http import JsonResponse
import os

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

class Image(APIView):

  def post(self, request):
    file_obj = request.FILES.get('send',None)

    print("file_obj",file_obj.name)

    file_path = os.path.join(BASE_DIR, 'media', 'user/img', file_obj.name)

    print("file_path", file_path)

    with open(file_path, 'w') as f:
      for chunk in file_obj.chunks():
        f.write(chunk)

    message = {}
    message['code'] = 200

    return JsonResponse(message)

前端ajax:

<form method="post" action="/upload/" enctype="multipart/form-data" target="ifm1">
    <input type="file" name="send"/>

    <input type="submit" value="Form表单提交"/>
  </form>

下面在看下在Django中接收文件并存储

首先是一个views函数的例子 

def get_user_profiles(request):
  if request.method == 'POST':
      myFile = request.FILES.get("filename", None)
      if myFile:
        dir = os.path.join(os.path.join(BASE_DIR, 'static'),'profiles')
        destination = open(os.path.join(dir, myFile.name),
                  'wb+')
        for chunk in myFile.chunks():
          destination.write(chunk)
        destination.close()
      return HttpResponse('ok')

这是一个简单的接收客户端上传的头像文件并保存的例子,应该看过这个就已经大体会使用接收文件了

但是这里的filename是客户端上传的文件名,也可能是像下面这样的表单 

<input type="file" name="filename" />

如果不知道固定上传的文件名,想要客户端上传什么文件就以其上传的名字命名可以这么写

def get_user_profiles(request):
  if request.method == 'POST':
    if request.FILES:
      myFile =None
      for i in request.FILES:
        myFile = request.FILES[i]
      if myFile:
        dir = os.path.join(os.path.join(BASE_DIR, 'static'),'profiles')
        destination = open(os.path.join(dir, myFile.name),
                  'wb+')
        for chunk in myFile.chunks():
          destination.write(chunk)
        destination.close()
      return HttpResponse('ok')

不过这个是通过输出request.FILES试出来的,不知道是否有更合适的方法。

总结

到此这篇关于Django接收照片储存文件的实例代码 的文章就介绍到这了,更多相关Django储存文件内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
简单介绍Python中利用生成器实现的并发编程
May 04 Python
python3新特性函数注释Function Annotations用法分析
Jul 28 Python
浅谈python字典多键值及重复键值的使用
Nov 04 Python
python urllib urlopen()对象方法/代理的补充说明
Jun 29 Python
Python实现的自定义多线程多进程类示例
Mar 23 Python
python实现转圈打印矩阵
Mar 02 Python
python傅里叶变换FFT绘制频谱图
Jul 19 Python
找Python安装目录,设置环境路径以及在命令行运行python脚本实例
Mar 09 Python
Python3操作YAML文件格式方法解析
Apr 10 Python
Python基于数列实现购物车程序过程详解
Jun 09 Python
python两种获取剪贴板内容的方法
Nov 06 Python
Python FuzzyWuzzy实现模糊匹配
Apr 28 Python
Python实现对adb命令封装
Mar 06 #Python
对Python中 \r, \n, \r\n的彻底理解
Mar 06 #Python
python去除删除数据中\u0000\u0001等unicode字符串的代码
Mar 06 #Python
mac在matplotlib中显示中文的操作方法
Mar 06 #Python
python数据类型可变不可变知识点总结
Mar 06 #Python
python GUI库图形界面开发之PyQt5信号与槽的高级使用技巧装饰器信号与槽详细使用方法与实例
Mar 06 #Python
python GUI库图形界面开发之PyQt5信号与槽的高级使用技巧(自定义信号与槽)详解与实例
Mar 06 #Python
You might like
php递归json类实例
2014/12/02 PHP
php文件上传简单实现方法
2015/01/24 PHP
PHP对象实例化单例方法
2017/01/19 PHP
ThinkPHP 3.2.3实现加减乘除图片验证码
2018/12/05 PHP
Firefox/Chrome/Safari的中可直接使用$/$$函数进行调试
2012/02/13 Javascript
滚动图片效果 jquery实现回旋滚动效果
2013/01/08 Javascript
原生JavaScript+LESS实现瀑布流
2014/12/12 Javascript
浅谈Javascript变量作用域问题
2014/12/16 Javascript
jQuery实现设置、移除文本框默认值功能
2015/01/13 Javascript
JavaScript预解析及相关技巧分析
2016/04/21 Javascript
用js控件div的滚动条,让它在内容更新时自动滚到底部的实现方法
2016/10/27 Javascript
jquery自定义插件结合baiduTemplate.js实现异步刷新(附源码)
2016/12/22 Javascript
详解vue slot插槽的使用方法
2017/06/13 Javascript
vue实现随机验证码功能的实例代码
2019/04/30 Javascript
Django+Vue实现WebSocket连接的示例代码
2019/05/28 Javascript
vue实现简易的双向数据绑定
2020/12/29 Vue.js
[09:13]2014DOTA2国际邀请赛 中国区预选赛coser表演
2014/05/23 DOTA
[01:28]国服启动器接入蒸汽平台操作流程视频
2021/03/11 DOTA
Python选课系统开发程序
2016/09/02 Python
Python实现简单网页图片抓取完整代码实例
2017/12/15 Python
Python实现的NN神经网络算法完整示例
2018/06/19 Python
python调用百度语音REST API
2018/08/30 Python
利用python numpy+matplotlib绘制股票k线图的方法
2019/06/26 Python
pytorch sampler对数据进行采样的实现
2019/12/31 Python
在pytorch中实现只让指定变量向后传播梯度
2020/02/29 Python
Python+redis通过限流保护高并发系统
2020/04/15 Python
CSS3 选择器 伪类选择器介绍
2012/01/21 HTML / CSS
使用css3实现超炫的loading加载动画效果
2014/05/07 HTML / CSS
个人简历自荐信
2013/12/05 职场文书
酒店总经理助理职责
2014/02/12 职场文书
广场舞大赛策划方案
2014/05/31 职场文书
办公室年度工作总结2015
2015/05/21 职场文书
教你怎么用PyCharm为同一服务器配置多个python解释器
2021/05/31 Python
MySQL数据库10秒内插入百万条数据的实现
2021/11/01 MySQL
基于PostgreSQL/openGauss 的分布式数据库解决方案
2021/12/06 PostgreSQL
Win10 最新稳定版本 21H2开始推送
2022/04/19 数码科技