python實現介面上傳檔案的兩種方法

2021-09-24 14:19:13 字數 1902 閱讀 5461

import requests

defsendimg

(img_path, img_name, img_type=

'image/jpeg'):

""" :param img_path:的路徑

:param img_name:的名稱

:param img_type:的型別,這裡寫的是image/jpeg,也可以是png/jpg

"""url =

''# 自己想要請求的介面位址

with

open

(img_path + img_name,

"rb"

) body =

# 上傳的時候,不使用data和json,用files

response = requests.post(url=url, files=body)

.json

return response

if __name__==

'__main__'

:# 上傳

res = sendimg(img_path, img_name)

# 呼叫sendimg方法

print

(res)

**如果上傳是陣列時,value直接寫路徑就可以**

檔案上傳:上傳的型別是file,用到頭部資訊
# "content-type": "multipart/form-data; boundary=76a22e30da2bb7790828887966871012"

from urllib3 import encode_multipart_formdata

import requests

defsendfile

(filename, file_path)

:"""

:param filename:檔案的名稱

:param file_path:檔案的絕對路徑

"""url =

""# 請求的介面位址

with

open

(file_path, mode=

"r", encoding=

"utf8"

)as f:

# 開啟檔案

file=

encode_data = encode_multipart_formdata(

file)

file_data = encode_data[0]

# b'--c0c46a5929c2ce4c935c9cff85bf11d4\r\ncontent-disposition: form-data; name="file"; filename="1.txt"\r\ncontent-type: text/plain\r\n\r\n...........--c0c46a5929c2ce4c935c9cff85bf11d4--\r\n

headers_from_data =

# token是登陸後給的值,如果你的介面中頭部不需要上傳字段,就不用寫,只要前面的就可以

# 'content-type': 'multipart/form-data; boundary=c0c46a5929c2ce4c935c9cff85bf11d4',這裡上傳檔案用的是form-data,不能用json

response = requests.post(url=url, headers=headers_from_data, data=file_data)

.json(

)return response

if __name__==

'__main__'

:# 上傳檔案

res = sendfile(filename, file_path)

# 呼叫sendfile方法

print

(res)

利用webservice介面上傳檔案

利用webservice介面上傳檔案,並將檔案內容儲存在資料庫中,資料庫表儲存檔案的型別為二進位制大字段 kenda 一 web service端 新建 專案 asp.net web服務應用程式 public class service system.web.services.webservice ...

Spring Cloud Feign 介面上傳檔案

最近在使用spring cloud封裝的feign,自己在專案中暴露的feign介面中有乙個介面是上傳檔案的,使用了常規的 requsetparam去獲取,然後報錯 the current request is not a multipart request然後以為是自己前端使用layui沒有指定上...

HttpClient請求介面上傳檔案以及引數

得到的是json型別的資料需要第三方解析json的jar包來解析 return result private void addfiles multipartentitybuilder entitybuilder,hashmapfiles for string name files.keyset pr...