syf1313113 发表于 2022-1-9 17:35

python上传图片接口求助

一直获取不到文件 麻烦大佬给看下是哪里的问题获取图片接口:
def post(request):
    if request.method == "POST":
      #获取上传文件的处理对象,通过对象获取里面文件名称和内容
      # img = request.FILES.getlist("files", None)
      img = request.FILES.getlist('image')
      print(img)
      # print(img.pathName)   # 获取文件名称
      # print(img.chunks)# 获取文件内容
      # 创建文件
      # save_path = '{}/up_image/{}'.format(settings.MEDIA_ROOT,img.name)
      # with open(save_path,'wb') as f:
      #   for content in img.chunks():
      #         f.write(content)
      # # 报存到数据库
      # FileUpload.objects.create(name=img.name)
      return HttpResponse("ok")
    else:
      return HttpResponse('方法错误')
上传图片接口:
def upload(pathName,pathRoute,pathType):
    '''上传图片'''
    # Cookie = login(getCookie=True)
    url = 'http://127.0.0.1:8000/api'
    file = open(pathRoute,'rb')
    print(file)
    files = {
            'image':(pathName,file,pathType),
             'bucketName':(None,'banner'),
             'type':(None,'image')
             }
    # image中写入的参数为:图片的名称(pathName),以二进制形式打开文件(file),文件类型(pathType)
    # headers = Cookie
    res = requests.post(url=url,files=files).json
    return res

thepoy 发表于 2022-1-9 18:11

file open 后没有调用 file.close(),新手们经常会犯的错误,所以 python 特人性化地推荐你使用 with open。

syf1313113 发表于 2022-1-9 18:15

thepoy 发表于 2022-1-9 18:11
file open 后没有调用 file.close(),新手们经常会犯的错误,所以 python 特人性化地推荐你使用 with open ...

with open(pathRoute,'rb') as file:   这样吗

三滑稽甲苯 发表于 2022-1-9 19:15

syf1313113 发表于 2022-1-9 18:15
with open(pathRoute,'rb') as file:   这样吗

是这样的,后面的代码加缩进就行了

syf1313113 发表于 2022-1-9 19:24

三滑稽甲苯 发表于 2022-1-9 19:15
是这样的,后面的代码加缩进就行了

为什么这行代码。img = request.FILES.getlist("file", None)只能取到前面files={'file':xxx,'name':yyy}中的file或者name。怎么一块取这个files

Anekys 发表于 2022-1-9 21:56


让我们来看看官方文档中是如何上传文件的吧

dleo 发表于 2022-1-9 22:04

request.FILES.getlist("files")
前端post的字段是files 这里就能取到files了

wshuo 发表于 2022-1-10 19:36

本帖最后由 wshuo 于 2022-1-10 19:37 编辑

虽然open()文件后一般用close() 进行关闭,但是这个问题不影响你这个代码,你应该详细说明一下后端用的是什么框架(例如flask还是django), 然后客户端代码一个小问题 .json 返回是一个函数,而不是json, 要返回json应该 .json(), 看你后端代码返回的并不是json, 所以建议使用 .text ,返回文本(text不是函数是一个属性), 调试代码的时候也关注一下后端代码是否报错,看看是否执行到return了
页: [1]
查看完整版本: python上传图片接口求助