diff --git a/swift3/controllers/multi_upload.py b/swift3/controllers/multi_upload.py index 0ec63a78..db909a02 100644 --- a/swift3/controllers/multi_upload.py +++ b/swift3/controllers/multi_upload.py @@ -470,6 +470,8 @@ class UploadController(Controller): _key = key.lower() if _key.startswith('x-amz-meta-'): headers['x-object-meta-' + _key[11:]] = val + elif _key == 'content-type': + headers['Content-Type'] = val # Query for the objects in the segments area to make sure it completed query = { diff --git a/swift3/test/unit/test_multi_upload.py b/swift3/test/unit/test_multi_upload.py index 5524166b..9abb7f05 100644 --- a/swift3/test/unit/test_multi_upload.py +++ b/swift3/test/unit/test_multi_upload.py @@ -81,7 +81,8 @@ class TestSwift3MultiUpload(Swift3TestCase): self.swift.register('GET', segment_bucket, swob.HTTPOk, {}, object_list) self.swift.register('HEAD', segment_bucket + '/object/X', - swob.HTTPOk, {'x-object-meta-foo': 'bar'}, None) + swob.HTTPOk, {'x-object-meta-foo': 'bar', + 'content-type': 'baz/quux'}, None) self.swift.register('PUT', segment_bucket + '/object/X', swob.HTTPCreated, {}, None) self.swift.register('DELETE', segment_bucket + '/object/X', @@ -615,6 +616,7 @@ class TestSwift3MultiUpload(Swift3TestCase): _, _, headers = self.swift.calls_with_headers[-2] self.assertEquals(headers.get('X-Object-Meta-Foo'), 'bar') + self.assertEquals(headers.get('Content-Type'), 'baz/quux') @s3acl(s3acl_only=True) def test_object_multipart_upload_complete_s3acl(self): @@ -624,6 +626,7 @@ class TestSwift3MultiUpload(Swift3TestCase): headers[sysmeta_header('object', 'tmpacl')] = \ acl_headers.get(sysmeta_header('object', 'acl')) headers['X-Object-Meta-Foo'] = 'bar' + headers['Content-Type'] = 'baz/quux' self.swift.register('HEAD', '/v1/AUTH_test/bucket+segments/object/X', swob.HTTPOk, headers, None) req = Request.blank('/bucket/object?uploadId=X', @@ -636,6 +639,7 @@ class TestSwift3MultiUpload(Swift3TestCase): _, _, headers = self.swift.calls_with_headers[-2] self.assertEquals(headers.get('X-Object-Meta-Foo'), 'bar') + self.assertEquals(headers.get('Content-Type'), 'baz/quux') self.assertEquals(tostring(ACLPublicRead(Owner('test:tester', 'test:tester')).elem()), tostring(decode_acl('object', headers).elem()))