接收通过 http 发送的文件的简单服务

Simple service to receive file sent via http

需要一些建议 - 我在 windows 10 PC 上有一个应用程序 运行,它以 text_binary 或 json 格式发送数据,这将是一行文本通常(大约 8kb 的小文件)。

看起来像这样 -

{source={ivarId={f1d22827-1650-41a0-a31e-28621430bc7d}, channel=1}, common={type=AUDIT_LOG, time=2020-04-20T15:40:11.256Z}, auditLog={clientId=2148, clientIp=127.0.0.1, account=, command=START_LIVE, parameters=[{name=channelId, value=1}, {name=answer, value=1}, {name=replyType, value=1}], result=STATUS_OK}, id={be138cc4-321c-41a9-8d2f-25a1e5d058fc}, addInfo={ivarIp=192.168.1.17}, images=[]}

它用于发送的协议是 HTTP,因此我必须设置一个网络服务来接收此数据并将网络服务的 URL 提供给应用程序以便它可以发送。

我只需要网络服务来接收这个文本文件并将其存储在本地某个地方。 Web 服务必须安装在应用程序所在的同一台 Windows 10 PC 上。

关于从哪里着手的任何想法,即接受和存储此文件的最佳方法是什么?

在我的脑海中,我可以想到一个简单的 python 脚本来启动 HTTP 服务器并将请求正文写入文件。

#!/usr/bin/python3

from http.server import HTTPServer, BaseHTTPRequestHandler

class SimpleHTTPRequestHandler(BaseHTTPRequestHandler):

    def do_POST(self):
        content_length = int(self.headers['Content-Length'])
        body = self.rfile.read(content_length)
        self.send_response(200)
        self.end_headers()
        f = open("request.txt", "wb") # you can use any name or probably derive name from request
        f.write(body)
        f.close()

httpd = HTTPServer(('localhost', 8001), SimpleHTTPRequestHandler)
httpd.serve_forever()

这是一个非常基本的示例,但它会为您提供一个起点。可以修改为指定文件location/name.

此答案假设文件内容在请求正文中发送。

如果您的请求有文件作为多部分数据,您可以参考this answer