我有以下方法将数据发布到服务器:
curl --ipv4 http://localhost:3000/api/tests/1 -d @test.csv
我正在尝试将带有curl的文件发布到计量器应用
在meteor中,我无法读取数据,因为我无法将一个键附加到curl选项数据作为键本身到达
示例
contents of test.csv = > 1,1,1
在服务器
console.log('route to host' , this.request.body); yields {{1,1,1} : ''}
是的,我甚至尝试了-F data =@test.csv也没有成功
如何在通过curl发布时添加密钥并将文件内容作为值?
答案 0 :(得分:1)
基本上-d用于curl意味着读取文件并将其内容用作数据
如果使用字母@开始数据,则其余部分应该是用于读取数据的文件名,或者 - 如果您希望curl从stdin读取数据。也可以指定多个文件。从名为' foobar'的文件中发布数据因此可以使用--data @foobar完成。当--data被告知从这样的文件中读取时,回车符和换行符将被删除。如果您不希望@字符有特殊解释,请使用--data-raw。
为了发送文件本身你需要像-F
这样的东西(HTTP)这使curl模拟用户按下提交按钮的填写表单。根据RFC 2388,这会导致使用Content-Type multipart / form-data对POST数据进行curl。这样可以上传二进制文件等。强制使用'内容' part为文件,文件名前缀为@符号。要从文件中获取内容部分,请在文件名前加上符号<前缀。 @和<之间的区别然后,@使文件作为文件上传附加在帖子中,而<创建一个文本字段,然后从文件中获取该文本字段的内容。
示例,将您的密码文件发送到服务器,其中包含密码'是 / etc / passwd将作为输入的表单字段的名称:
curl -F密码= @ / etc / passwd www.mypasswords.com
在您的情况下可能使用-F curl --ipv4 http://localhost:3000/api/tests/1 -F data =
如果要将文件作为文件上传,请使用-F data=@test.csv
答案 1 :(得分:0)
这有效!!
curl --ipv4 --data-urlencode "csv@test.csv" http://localhost:3000/api/tests/1
希望这有助于某人:)