有没有办法在nodeJS POST API请求中指定本地文件系统路径,能够使用curl而不是nodejs进行api调用
Posted
技术标签:
【中文标题】有没有办法在nodeJS POST API请求中指定本地文件系统路径,能够使用curl而不是nodejs进行api调用【英文标题】:Is there way to specify local file system path in nodeJS POST API request , am able to make api call using curl but not with nodejs 【发布时间】:2020-05-15 15:01:43 【问题描述】:以下 curl API 成功将 .zip 文件从本地文件系统部署到 Azure Function APP。
curl -X POST -u user123:P@ssword --data-binary @"C:\Ddrive\Porject\deploy-zip\wb-uc-code.zip" "https://abc-world.scm.azurewebsites.net/api/zipdeploy"
但我想用 NodeJs 实现同样的效果:所以我将它转换为 -
函数()
var dataString = "@C:\Ddrive\Workbench\deploy-zip\wb-uc1.zip";
var options =
url: 'https://abc-world.scm.azurewebsites.net/api/zipdeploy',
method: 'POST',
body: dataString,
auth:
'user': 'user123',
'pass': 'P@ssword'
;
request.post(options, (response, error) =>
if (error)
console.log("error");
else
console.log(response.body);
)
执行时出现错误: -------->>> 很可能我认为无法在 Options 中适当地提供文件路径。有人可以帮忙吗?
【问题讨论】:
见:github.com/request/request#streaming 【参考方案1】:有两点需要注意。
1.你应该传递data-binary,你在你的代码中传递路径字符串。
2.response和error的顺序颠倒了。
请参考下面的工作代码。
var request=require('request')
var fs = require("fs")
var dataString=fs.createReadStream("D:\\testProject\\NodeJs\\nodejs-docs-hello-world\\test4.zip");
var options =
url: 'https://tonytestwebnode.scm.azurewebsites.net/api/zipdeploy',
method: 'POST',
body: dataString,
auth:
'user': 'tonytestweb',
'pass': 'XXXX!'
;
request.post(options, (error, response) =>
console.log(response.statusCode);
)
【讨论】:
感谢您的帮助,该错误已解决,但部署不成功,我收到 500 错误代码,但使用 curl 进行部署也是如此。 @GKAMESWARRAO 详细的错误信息是什么?密码正确吗? 是的,我检查了文件路径是否正确,我相信您的代码也是正确的。你能在 Azure AppService 中部署文件吗?我正在尝试通过此 URL 部署功能 App,尽管它是由 curl 部署的,而在尝试使用 Node 实现相同功能时遇到了问题。 @GKAMESWARRAO 是的,我成功部署了一个 webapp。您需要查看详细的错误信息。 @GKAMESWARRAO 请检查此链接***.com/questions/20960403/…以上是关于有没有办法在nodeJS POST API请求中指定本地文件系统路径,能够使用curl而不是nodejs进行api调用的主要内容,如果未能解决你的问题,请参考以下文章
NodeJS-ExpressJS 猫鼬 API POST 请求与外键
从 Angular/NodeJS/ExpressJS 向 3rd 方 URL 的 POST 请求
如何将在 Lambda 上使用 NodeJS 丰富的对象返回到 API POST 请求
NodeJS - 只有 OPTIONS 请求被发送到 REST API,POST 或 GET 不跟随(Cloudflare)