- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在编写一个简单的命令行应用程序 - transfer.py - 允许从 transfer.sh 服务上传和下载文件作为学习练习,使用 HTTP 的“请求”库。多亏了这里的一些答案,我才能够使用 python-clint 和 python-requests 实现一个进度条来监控文件下载 - 所说的功能正在被看到 here .
无论如何,当我试图实现相同类型的进度条来监控上传时,我感到非常非常迷茫——它使用 HTTP PUT。我从概念上理解它应该非常相似,但由于某种原因无法弄清楚,如果有人能指出我正确的方向,我将不胜感激。我尝试了一些使用多部分编码器等的方法,但这些方法导致文件在上传过程中被破坏(服务接受原始 PUT 请求,多部分编码似乎把它弄乱了)。
最终目标是编写一个脚本,使用随 secret 钥对要上传的文件进行 AES 加密,将其上传到服务,并打印一个链接 + 加密 key ,可供 friend 用来下载/解密文件,主要是为了好玩和填补我的 python 中的一些知识空白。
最佳答案
我建议您使用 requests_toolbelt使用 clint.textui.progress
模块。我找到了这段代码。
from clint.textui.progress import Bar as ProgressBar
from requests_toolbelt import MultipartEncoder, MultipartEncoderMonitor
import requests
def create_callback(encoder):
encoder_len = encoder.len
bar = ProgressBar(expected_size=encoder_len, filled_char='=')
def callback(monitor):
bar.show(monitor.bytes_read)
return callback
def create_upload():
return MultipartEncoder({
'form_field': 'value',
'another_form_field': 'another value',
'first_file': ('progress_bar.py', open(__file__, 'rb'), 'text/plain'),
'second_file': ('progress_bar.py', open(__file__, 'rb'),
'text/plain'),
})
if __name__ == '__main__':
encoder = create_upload()
callback = create_callback(encoder)
monitor = MultipartEncoderMonitor(encoder, callback)
r = requests.post('https://httpbin.org/post', data=monitor,
headers={'Content-Type': monitor.content_type})
print('\nUpload finished! (Returned status {0} {1})'.format(
r.status_code, r.reason
))
关于python - 如何使用 Python Requests 和 Clint 监控 HTTP PUT 上传的进度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29650859/
我想根据特定字符更改 Clint 在输入字段中写入的文本的颜色,例如,如果输入类型 www.abcd.com 和激活事件的字符是。(点)颜色会像这样改变:www.(绿色)abcd.(红色)com(黄色
我正在尝试使用smack 4.1.1编写XMPP Clint。我已经将smack jar文件添加到了构建路径中。我正在使用Eclipse IDE编写代码。 但是,当我尝试运行应用程序时,出现NoCla
clint进度条基于迭代器。 urllib.urlretrieve() 有一个回调,报告 block 下载完成。 是否可以在每次调用回调时将迭代器设置在某个位置? 最佳答案 查看the source
我正在编写一个简单的命令行应用程序 - transfer.py - 允许从 transfer.sh 服务上传和下载文件作为学习练习,使用 HTTP 的“请求”库。多亏了这里的一些答案,我才能够使用 p
我是一名优秀的程序员,十分优秀!