Skip to content

Commit 672cee3

Browse files
committed
support large file uploading
1 parent 0b3e2e8 commit 672cee3

File tree

3 files changed

+13
-5
lines changed

3 files changed

+13
-5
lines changed

pyclowder/files.py

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import tempfile
1010

1111
import requests
12+
from requests_toolbelt.multipart.encoder import MultipartEncoder
1213
from urllib3.filepost import encode_multipart_formdata
1314

1415
from pyclowder.datasets import get_file_list
@@ -312,7 +313,11 @@ def upload_to_dataset(connector, host, key, datasetid, filepath, check_duplicate
312313
url = '%sapi/uploadToDataset/%s?key=%s' % (host, datasetid, key)
313314

314315
if os.path.exists(filepath):
315-
result = connector.post(url, files={"File": open(filepath, 'rb')},
316+
filename = os.path.basename(filepath)
317+
m = MultipartEncoder(
318+
fields={'file': (filename, open(filepath, 'rb'))}
319+
)
320+
result = connector.post(url, data=m, headers={'Content-Type': m.content_type},
316321
verify=connector.ssl_verify if connector else True)
317322

318323
uploadedfileid = result.json()['id']
@@ -345,10 +350,11 @@ def _upload_to_dataset_local(connector, host, key, datasetid, filepath):
345350
source_path)
346351
break
347352

348-
(content, header) = encode_multipart_formdata([
349-
("file", '{"path":"%s"}' % filepath)
350-
])
351-
result = connector.post(url, data=content, headers={'Content-Type': header},
353+
filename = os.path.basename(filepath)
354+
m = MultipartEncoder(
355+
fields={'file': (filename, open(filepath, 'rb'))}
356+
)
357+
result = connector.post(url, data=m, headers={'Content-Type': m.content_type},
352358
verify=connector.ssl_verify if connector else True)
353359

354360
uploadedfileid = result.json()['id']

requirements.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,4 @@ wheel==0.33.1
66
urllib3==1.24.1
77
pytest==4.3.1
88
pytest-pep8==1.0.6
9+
requests-toolbelt==0.9.1

setup.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ def description():
3636
'pika==1.0.0',
3737
'PyYAML==5.1',
3838
'requests==2.21.0',
39+
'requests-toolbelt==0.9.1',
3940
],
4041

4142
include_package_data=True,

0 commit comments

Comments
 (0)