>백엔드 개발 >파이썬 튜토리얼 >여러 파일 보내기/업로드 요청을 구현하는 Python의 예

여러 파일 보내기/업로드 요청을 구현하는 Python의 예

不言
不言원래의
2018-06-04 11:41:493367검색

이 글에서는 Python에서 여러 파일을 전송/업로드하는 요청을 구현하는 방법에 대한 예제를 주로 소개합니다. 이제 필요한 친구들이 참고할 수 있도록 공유하겠습니다.

1. Python2.

url = "http://httpbin.org/post" 
data = None 
files = { ... } 
r = requests.post(url, data, files=files)


이 파일 매개변수는 다양한 형태의 데이터를 수용할 수 있습니다. 가장 기본적인 두 가지 형식은 다음과 같습니다.

튜플 목록 유형2.1. 공식 권장 사항 사용되는 사전 매개변수 형식은 다음과 같습니다.

{ 
 "field1" : ("filename1", open("filePath1", "rb")), 
 "field2" : ("filename2", open("filePath2", "rb"), "image/jpeg"), 
 "field3" : ("filename3", open("filePath3", "rb"), "image/jpeg", {"refer" : "localhost"}) 
}

이 사전의 키는 게시 요청을 보낼 때의 필드 이름이며, 사전의 값은 보낼 파일의 정보를 알 수 있도록 설명합니다. 위에서 값은 2-튜플, 3-튜플 또는 4-튜플이 될 수 있습니다.

이 튜플의 각 필드의 의미는 다음과 같습니다.

("filename", "fileobject", "content-type", "headers")

기본적으로 기본값이 사용됩니다

In 위의 사용 형식 외에도 실제로 요청은 다음과 같이 더 간결한 매개 변수 형식을 지원합니다.

{ 
 "field1" : open("filePath1", "rb")), 
 "field2" : open("filePath2", "rb")), 
 "field3" : open("filePath3", "rb")) 
}

이 매개 변수 형식의 동등한 효과는 다음과 같습니다. 여기서 filename은 파일 경로의 파일 이름입니다.

{ 
 "field1" : ("filename1", open("filePath1", "rb")), 
 "field2" : ("filename2", open("filePath2", "rb")), 
 "field3" : ("filename3", open("filePath3", "rb")) 
}

물론 이렇게 보낼 수도 있습니다. 파일 요청

{ 
 "field1" : open("filePath1", "rb").read()) 
}

여기서 파일 이름의 값은 field1

2.2이며, 튜플 목록 유형의 파일 매개 변수

실제로는, 튜플 목록의 형식은 기본적으로 가장 바깥쪽을 제외하고 사전의 형식과 동일합니다. 요청 내부에서는 사전 매개변수 형식이 결국 튜플 열 형식으로 변환됩니다. 공식 홈페이지에서 권장하는 사용법은 다음과 같습니다.

[ 
 ("field1" : ("filename1", open("filePath1", "rb"))), 
 ["field2" : ("filename2", open("filePath2", "rb"), "image/jpeg")], 
 ("field3" : ("filename3", open("filePath3", "rb"), "image/jpeg", {"refer" : "localhost"})) 
]

목록의 하위 항목은 튜플 또는 목록이 될 수 있습니다. 여기서도 소개 형식이 지원됩니다.

[ 
 ("field1" : open("filePath1", "rb"))), ##filename 使用的是filepath的文件名 
 ("field2" : open("filePath2", "rb").read())) ##filename 使用的是键值,即 field2 
]

3. 여러 파일을 전송하는 단일 필드 [즉, 파일 업로드 시 다중 선택으로 설정]

3.1, 사전 매개변수 형식

{ 
 "field1" : [ 
     ("filename1", open("filePath1", "rb")), 
     ("filename2", open("filePath2", "rb"), "image/png"), 
     open("filePath3", "rb"), 
     open("filePath4", "rb").read() 
    ] 
}

3.2, 튜플 목록 형식

[ 
 ("field1" , ("filename1", open("filePath1", "rb"))), 
 ("field1" , ("filename2", open("filePath2", "rb"), "image/png")), 
 ("field1" , open("filePath3", "rb")), 
 ("field1" , open("filePath4", "rb").read()) 
]
위의 두 가지 형식으로 전송된 요청의 경우 모든 파일은 동일한 필드에 속하게 됩니다. 백그라운드 서비스는 field1 필드에서 모든 파일 개체를 얻을 수 있습니다.

4.

위 소개는 파일 콘텐츠 보내기 요청을 사용하는 것인데, 때로는 파일을 보낼 때 일반 데이터 필드도 보내야 합니다. 이때 일반 데이터 필드는 다음과 같이 데이터 매개변수에 직접 저장할 수 있습니다. 다음:

data = {"k1" : "v1"} 
files = { 
 "field1" : open("1.png", "rb") 
} 
r = requests.post("http://httpbin.org/post", data, files=files)

관련 권장 사항:

Python은 매우 간단한 비디오 객체 추출 기능을 구현합니다.

특정 IP에 대한 핑을 구현하는 Python의 예

위 내용은 여러 파일 보내기/업로드 요청을 구현하는 Python의 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.