网络编程
位置:首页>> 网络编程>> Python编程>> Django接收照片储存文件的实例代码

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

作者:PythonNew_Mr.Wang  发布时间:2022-06-01 09:05:29 

标签:django,接收,储存

后端:


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试出来的,不知道是否有更合适的方法。

来源:https://www.cnblogs.com/wanghong1994/p/12431691.html

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com