用于下载和上载文件的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个基本操作:downloadupload文件。在

请求字段

为了确定每个请求中所需的操作,服务器检查请求的以下部分:

  • 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开头的任何值(例如ddowndownload)将匹配为downloadacti以u开头的任何值(例如uupupload)将匹配为upload操作。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
javaelk:如何在Kibana中按异常类对stacktrace进行分组   java两个组件使用MigLayout相互重叠   java Hibernate标准获取关联实体的列表,而不是父实体的列表   从Java关闭另一个应用程序,但不是由当前Java应用程序启动   java使用OGNL获取参数   java如何在SSLEngine中启用密码TLS\U DHE\U RSA\U和\U AES\U 256\U GCM\U SHA384   在Java中有效地比较两个列表<Object[]>   java杀死挂起的线程   在java中从指定模式前后的字符串中提取子字符串   存储整数的java HashMap替代方案   java如何使用LibGDX加载特定于语言的资产?   java如何使用JSON响应从维基百科读取结构化数据   java无法连接到Spark Master:原因是:[已解除关联]   java如何配置Elastic beanstalk classic负载平衡器以使用CLI终止HTTPS   java筛网中的奥斯汀大于int   java PircBot在每个用户上迭代一组命令   java将带有Jackson的hashmap编组为XML的错误结构   testng中的java设置testfailure给出了正回报   java如何在IntelliJ中正确配置Eclipse项目?