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之模块的加载
Oct 24 Python
Python中用PIL库批量给图片加上序号的教程
May 06 Python
python的else子句使用指南
Feb 27 Python
详解Python判定IP地址合法性的三种方法
Mar 06 Python
numpy中矩阵合并的实例
Jun 15 Python
pygame游戏之旅 添加键盘按键的方法
Nov 20 Python
python 在屏幕上逐字显示一行字的实例
Dec 24 Python
Python不同目录间进行模块调用的实现方法
Jan 29 Python
详解python 利用echarts画地图(热力图)(世界地图,省市地图,区县地图)
Aug 06 Python
python标准库sys和OS的函数使用方法与实例详解
Feb 12 Python
PyQt5的QWebEngineView使用示例
Oct 20 Python
Python采集壁纸并实现炫轮播
Apr 30 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
BBS(php &amp; mysql)完整版(三)
2006/10/09 PHP
php foreach 使用&amp;(与运算符)引用赋值要注意的问题
2010/02/16 PHP
PHP实现生成模糊图片的方法示例
2017/12/21 PHP
PHP获取二叉树镜像的方法
2018/01/17 PHP
PHP实现十进制数字与二十六进制字母串相互转换操作示例
2018/08/10 PHP
使用PHP+Redis实现延迟任务,实现自动取消订单功能
2019/11/21 PHP
用javascript实现点击链接弹出&quot;图片另存为&quot;而不是直接打开
2007/08/15 Javascript
Javascript 键盘事件的组合使用实现代码
2012/05/04 Javascript
jquery插件制作 提示框插件实现代码
2012/08/17 Javascript
IE下JS读取xml文件示例代码
2013/08/05 Javascript
8个实用的jQuery技巧
2014/03/04 Javascript
javascript中style.left和offsetLeft的用法说明
2014/03/07 Javascript
js操作XML文件的实现方法兼容IE与FireFox
2016/06/25 Javascript
深入理解Nodejs Global 模块
2017/06/03 NodeJs
Javascript实现跨域后台设置拦截的方法详解
2017/08/04 Javascript
基于require.js的使用(实例讲解)
2017/09/07 Javascript
ES6扩展运算符用法实例分析
2017/10/31 Javascript
JS中双击和单击事件冲突的解决方法
2018/04/09 Javascript
ElementUI radio组件选中小改造
2019/08/12 Javascript
vue.config.js常用配置详解
2019/11/14 Javascript
[45:18]2018DOTA2亚洲邀请赛 4.3 突围赛 Optic vs iG 第一场
2018/04/04 DOTA
Python线程同步的实现代码
2018/10/03 Python
Django模板语言 Tags使用详解
2019/09/09 Python
解决python -m pip install --upgrade pip 升级不成功问题
2020/03/05 Python
如何用Python编写一个电子考勤系统
2021/02/08 Python
尼克松手表官网:Nixon手表
2019/03/17 全球购物
构造方法和其他方法的区别?怎么调用父类的构造方法
2013/09/22 面试题
英语硕士生求职简历的自我评价
2013/10/15 职场文书
奥巴马演讲稿
2014/01/08 职场文书
革命先烈的英雄事迹材料
2014/02/15 职场文书
幼儿园户外活动总结
2014/07/04 职场文书
2015年社区精神文明工作总结
2015/05/26 职场文书
教师岗位说明书
2015/09/30 职场文书
如何在Python项目中引入日志
2021/05/31 Python
bootstrapv4轮播图去除两侧阴影及线框的方法
2022/02/15 HTML / CSS
Linux、ubuntu系统下查看显卡型号、显卡信息详解
2022/04/07 Servers