用于下载和上载文件的HTTP服务器
httpsweet的Python项目详细描述
httpsweet公司
一个HTTP服务器,可以轻松下载和上传文件。在
创建它时考虑了灵活性,允许在许多不同的情况下使用,因此in允许以多种不同的方式部署相同的操作。有关详细信息,请参阅Specification section。在
Note:此软件不是用于生产环境,而是用于测试目的,因此使用时要小心,因为它不提供任何安全机制。在
安装
从python包:
pip3 install httpsweet
从存储库:
^{pr2}$示例
本节展示了一些常见操作的示例。在
下载文件
下载文件test
:
curl 127.0.0.1:8000/test curl 127.0.0.1:8000/?path=test curl 127.0.0.1:8000/ -d 'action=download&path=test'
下载文件的一部分test
:
curl '127.0.0.1:8000/test?offset=10&size=20' curl '127.0.0.1:8000/?offset=10&size=20&path=test' curl 127.0.0.1:8000/ -d 'action=download&offset=10&size=20&path=test'
上传文件
上载名为test_up
的文件:
curl 127.0.0.1:8000/test_up -H "Content-Type: application/octet-stream" --data 'thedata' curl localhost:8000/test_up -H "Content-Type: application/octet-stream" --data-binary "@/etc/hosts" curl '127.0.0.1:8000/test_up?action=upload_file&data=thedata'
上载附加文件:
curl 127.0.0.1:8000/test_app?append=t -H "Content-type: application/octet-stream" --data "thedata" curl '127.0.0.1:8000/test_app?action=upload_file&data=thedata&append=t'
上载base64编码:
curl 127.0.0.1:8000/test_64?encoding=64 -H 'Content-type: application/octet-stream' --data 'dGhlZGF0YQo=' curl '127.0.0.1:8000/?action=upload_file&path=test_64&data=dGhlZGF0YQo&encoding=64'
HTTPS
服务器还支持HTTPS协议,您应该通过使用参数--cert
和{--cert
参数。在
要生成自动自证书,可以使用以下命令:
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 cat key.pem >> cert.pem # generate cert with the private key
目录列表
默认情况下,目录列表是禁用的,如果要启用它,必须提供标志--dir-list
。在
规范
服务器执行2个基本操作:download和upload文件。在
请求字段
为了确定每个请求中所需的操作,服务器检查请求的以下部分:
- Method
- POST | PUT::表示上传
- 其余方法::指示下载
- Url
- Url path::指示所需文件的路径
- Url参数::表示操作参数
- Body,可以是:
- 原始数据::指示文件的内容
- Url编码参数::表示操作参数
- Json data::表示动作参数
- Headers::表示操作参数
- Cookies::表示操作参数。由于
path
键在cookies中有特殊含义,因此不可能在这些字段中使用该参数。在
更相关的部分是列表最后位置的部分。这意味着,例如,如果Url路径指示路径index.html
,但是有一个参数path
(在Url或正文中)指示other_file.txt
,那么{
键值字段(Url、Body、Headers、Cookies)
在所有可以指定操作参数的字段中,可以提供以下值:
- action:str::确定操作
- path:str::指示所需文件的路径
- offset:int::(Download)指示读取文件的起点
- size:int::(Download)表示读取的字节数
- append:flag::(Upload)指示是否应将数据附加到所需的文件
- encoding:str::表示操作中所需的编码器使用,实际上只支持base64(或不支持encoder)
- data:str::(上载)要写入所需文件的数据
匹配关键字
{{{14}对于键 在参数 标签:action
中,以d
开头的任何值(例如d
,down
,download
)将匹配为download
acti以u
开头的任何值(例如u
,up
,upload
)将匹配为upload
操作。在推荐PyPI第三方库