python使用requests 上传文件为中文名时上传失败

本文解决了在使用Python的requests库上传带有中文名称的文件时遇到的乱码问题。通过对比浏览器与requests上传参数的差异,发现在urllib3的fields文件中,参数名与值之间的编码方式导致了问题。将ASCII编码改为UTF-8,可以避免异常并成功上传。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

https://www.cnblogs.com/yangyangchunchun/p/9351966.html
浏览器可以上传成功,但是requests不能上传成功。抓包发现上传时参数有差异:
浏览器: filename = filename
requests: filename* = filename

解决办法:python 的requests使用了urllib3中的方法。在urllib3下的fileds文件中,修改

修改后:

value = '%s="%s"' % (name, value.decode('utf-8'))    #原文件中多了一个*号,这里把它去掉

看到另一个解决方法
https://blog.youkuaiyun.com/jylonger/article/details/82386868
因为使用了ascii编码方式不能对中文进行编码,所以出现了异常,不能在else中返回。然后才执行了第一个解决方法中的代码
这里直接把ascii编码改成utf-8,不会产生异常,直接返回result。

### 关于图像隐写术的技术实现 #### 编码方式与实现方法 图像隐写术是一种用于秘密通信的方法,允许将敏感数据嵌入到看似无害的载体图像中而不引起注意。常见的编码方式和技术包括离散余弦变换(DCT)[^1]、离散小波变换(DWT)[^3]以及最小显著位(LSB)替换法。 对于DWT而言,在图像处理过程中,输入由隐写图像和辅助变量\(z\)通过DWT生成新的隐写图像。这里,\(z\)是从高斯分布中随机抽样得到的数值,这有助于增加嵌入过程的安全性和复杂度。 在实际操作层面,可以采用Python编程语言配合`PyWavelets`库来进行基于DWT的图像隐写: ```python import pywt from numpy import * def embed_watermark(image, watermark): # 对原始图像进行二维离散小波变换 coeffs = pywt.dwt2(image, 'haar') # 将水印信息嵌入到LL子带中 cA, (cH, cV, cD) = coeffs watermarked_cA = cA + watermark # 进行逆向离散小波变换恢复含水印的图像 new_coeffs = watermarked_cA, (cH, cV, cD) watermarked_image = pywt.idwt2(new_coeffs, 'haar') return watermarked_image ``` 此代码片段展示了如何利用Haar小波基函数执行正交分解,并把待隐藏的信息加入低频分量(LL),最后再重构出含有隐形标记的新图象。 #### 数字水印与图像安全 数字水印技术被广泛应用于版权保护等领域,它不仅能够验证媒体的真实性还能追踪非法复制行为。然而值得注意的是,尽管存在多种有效的算法设计,但没有任何单一方案能完全抵御所有类型的攻击;因此建议综合运用多重防护手段提升整体安全性水平[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值