WebServer 中的文件上传表单是如何设计的,Curl 如何将它们用于 POST 文件?

How are file upload forms are designed in WebServer and How Curl can use them to POST files?

用例 - 我有一个包含两个文件的嵌入式盒子

  1. 一个包含调试日志的大文件,用于协助解决技术领域问题的用户日志。这个大文件基本上是一个大约 100 Mb 的 zip 文件。

  2. 另一个文件 - 包含配置的小文件 - 大约 3 Kb。

我的要求是post这些文件到一个webServer。

技术 - 为了post这个文件,我正在使用libcurl。

我对 Web 服务器的假设 - 这可能是一个包含文件输入类型的表单。

<form method="post" enctype="multipart/form-data">
 <div>
   <label for="file">Choose file to upload</label>
   <input type="file" id="file" name="Myfile" multiple>
 </div>
 <div>
   <button>Submit</button>
 </div>
</form>

此外,它可能是 运行 节点服务器来处理 POST 请求。

问题

1) curl -F 是 post 此类文件的最佳选择,而不是 curl -d 或 -d 二进制选项吗?

2) 通常,我们是否为每种文件类型(例如技术领域文件和配置文件的另一种形式)提供单独的表格?

如果不是,那么要求用户输入输入文件标签名是否是个好主意,这样无论 Web 服务器如何设置,curl -F 选项都可以准确工作? 基本上,根据示例 - myFile 可以是任何名称,所以要求用户传递此名称是个好主意吗?文件标签名称的简称或通俗名称是什么 - Myfile?这样我就可以要求用户输入此信息。

意识到 HTTP/HTTPS PUT 方法是合适的解决方案。 这样就不需要表单或强大的 npm 模块。 这是 PUT 的卷曲页面 - How to do a PUT request with curl?

var ciphers = [
    'AES128-SHA',
    'AES256-SHA'
].join(':');


var options = {
    key: fs.readFileSync('./key.pem'),
    cert: fs.readFileSync('./cert.pem'),
    ciphers: ciphers
};

https.createServer(options, function(req, res) 

    {

     if (req.method === 'PUT') 
       {
           // use file npm module to copy the file content here. 
             // like fs.write
           req.on('data', function(data)
            {
               // write data here ..       
            } 
        }
        });

客户端 -

这是测试它的命令行 -

curl -k -X PUT -F "myfile=@/test/Test.png" https://192.162.1.19/

这是测试它的 libcurl 代码。

https://curl.haxx.se/libcurl/c/httpput.html

记得link使用 -lcurl

#gcc putCode.c -o putcode -lcurl 
#./putCode /test/Music/joy.mp3 joyful.mp3