用例 - 我有一个有两个文件的嵌入式框
一个包含调试日志的大文件,用于帮助解决技术领域问题的用户日志。这个大文件基本上是一个大约100 Mb的zip文件。
另一个文件 - 包含配置的小文件 - 大约3 Kb。
我的要求是将这些文件发布到webServer。
技术 - 为了发布这个文件,我使用的是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是发布此类文件而非curl -d或-d二元期权的最佳选择吗?
2)通常,我们是否为每种文件类型都有单独的表单,例如技术字段文件和配置文件的另一种表单?
如果没有,那么要求用户输入输入文件标签名称是一个好主意,这样curl -F选项可以准确地工作,而不管Web服务器是如何设置的? 基本上,根据示例 - myFile可以是任何名称,因此请求用户传递此名称是个好主意吗?文件标签名称的简短或流行名称是什么 - Myfile?这样我就可以要求用户输入此信息。
答案 0 :(得分:0)
认识到HTTP / HTTPS PUT方法是适当的解决方案。 这样就不需要形式或强大的npm模块。 这是PUT的卷曲页面 - How to do a PUT request with curl?
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />
<table style="float: left;" class="table table-bordered">
<tbody>
<tr>
<td>CPU</td>
<td>
<button type="button" data-exists="cpu" class="btn btn-primary btn-sm cpu">Add CPU</button>
</td>
</tr>
<tr>
<td>Motherboard</td>
<td>
<img src="//img.jpeg" height="42" width="42">
<a href="www.link.com">Test Title</a>
</td>
<td>
<button type="button" data-exists="motherboard" class="btn btn-danger btn-sm motherboard">Edit Motherboard</button>
</td>
</tr>
<tr>
<td>Graphic Card</td>
<td>
<button type="button" data-exists="graphic-card" class="btn btn-primary btn-sm graphic-card">Add Graphic Card</button>
</td>
</tr>
<tr>
<td>Power Supply </td>
<td>
<button type="button" data-exists="power-supply" class="btn btn-primary btn-sm power-supply">Add Power Supply</button>
</td>
</tr>
</tbody>
</table>
客户端 -
这是测试它的命令行 -
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 ..
}
}
});
这是用于测试它的libcurl代码。
https://curl.haxx.se/libcurl/c/httpput.html
请记住链接使用 -lcurl
curl -k -X PUT -F "myfile=@/test/Test.png" https://192.162.1.19/