WebServer 中的文件上传表单是如何设计的,Curl 如何将它们用于 POST 文件?
How are file upload forms are designed in WebServer and How Curl can use them to POST files?
用例 - 我有一个包含两个文件的嵌入式盒子
一个包含调试日志的大文件,用于协助解决技术领域问题的用户日志。这个大文件基本上是一个大约 100 Mb 的 zip 文件。
另一个文件 - 包含配置的小文件 - 大约 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
用例 - 我有一个包含两个文件的嵌入式盒子
一个包含调试日志的大文件,用于协助解决技术领域问题的用户日志。这个大文件基本上是一个大约 100 Mb 的 zip 文件。
另一个文件 - 包含配置的小文件 - 大约 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