You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用python-swiftclient上传内存Zip文件时遭遇Error 422: Unprocessable Entity错误的求助

python-swiftclient上传内存Zip文件时遭遇Error 422: Unprocessable Entity错误的求助

我正在用python-swiftclient和zipfile写一个Python脚本,目的是把文件压缩后上传到OpenStack对象存储的Swift API端点。我把压缩好的数据存在内存里,用的是io.BytesIO对象。

下面是我的代码片段:

import io
import zipfile

arc_name = 'test.zip'
zip_buffer = io.BytesIO()
# 注:原代码疑似笔误,已修正为正确的ZipFile初始化方式
with zipfile.ZipFile(zip_buffer, "a", zipfile.ZIP_DEFLATED, True) as zip_file:
    for file in files:
        with open(file, 'rb') as src_file:
            zip_file.writestr(arc_name, src_file.read())

...

import base64
import hashlib
import swiftclient

zip_data = zip_buffer.getvalue()
checksum_base64 = base64.b64encode(hashlib.md5(zip_data).digest()).decode()

swift_conn = swiftclient.Connection(<creds>)
container_name = 'swift-test'
swift_conn.put_object(
    container=container_name, 
    contents=zip_data, 
    content_type=None, 
    obj=arc_name, 
    etag=checksum_base64
)

运行后我遇到了如下错误:

swiftclient.exceptions.ClientException: Object PUT failed: https://..../swift/v1/swift-test/test.zip 422 Unprocessable Entity

我查了一些关于HTTP 422错误的问题,觉得问题应该出在content_type(MIME类型)上。我试过设置'application/zip'和'multipart/mixed',但不管用哪种,都会报同样的错误。

如果有更合适的MIME类型,或者我还有其他没注意到的细节问题,希望大家能给我一些帮助,谢谢!

备注:内容来源于stack exchange,提问作者Dave

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 10:39:34