diff --git a/requests/models.py b/requests/models.py index 75692447..c0d613bb 100644 --- a/requests/models.py +++ b/requests/models.py @@ -348,7 +348,7 @@ class Request(object): else: fn = guess_filename(v) or k fp = v - if isinstance(fp, bytes): + if isinstance(fp, (bytes, str)): fp = StringIO(fp) fields.update({k: (fn, fp.read())}) diff --git a/tests/test_requests.py b/tests/test_requests.py index 43745a56..e8a9d4ee 100755 --- a/tests/test_requests.py +++ b/tests/test_requests.py @@ -344,6 +344,15 @@ class RequestsTestSuite(TestSetup, TestBaseMixin, unittest.TestCase): post3 = post(url, files={'fname.txt': 'fdata', 'fname2.txt':open(__file__,'rb')}) self.assertEqual(post3.status_code, 200) + post4 = post(url, files={'fname.txt': u'fdata'}) + self.assertEqual(post4.status_code, 200) + + post5 = post(url, files={'file': ('file.txt', 'more fdata')}) + self.assertEqual(post5.status_code, 200) + + post6 = post(url, files={'fname.txt': u'\xe9'}) + self.assertEqual(post6.status_code, 200) + def test_nonzero_evaluation(self): for service in SERVICES: