私は私がNodeJSと2を使用していますContent-Type: multipart/form-data
(http://docs.octoprint.org/en/master/api/fileops.html#upload-file)とPOSTリクエスト非同期フォームデータのPOSTリクエストxmlhhtprequestと
を送信することにより行われるべきOctoprintのREST APIのにファイルをアップロードしようとしていますライブラリ、XmlHttpRequest、およびフォームデータ。しようとすると:私は( "POST"、URL、false)をxhr.open使用して同期要求を行った場合、この、
TypeError: first argument must be a string or Buffer
:
var xhr = new xmlhttprequest() ;
var form = new formData() ;
form.append('exampleKey', 'exampleValue');
xhr.open("POST","octopi.local/api/local", true) ;
xhr.setRequestHeader("Content-Type","multipart/form-data") ;
xhr.send(form) ;
を私はxhr.sendラインでエラーが出ますエラーが消えます。
なぜそうですか?非同期要求に変換する方法はありますか?
EDIT実際には、私は実際にそのドキュメントを理解していません。 form.append("filename", filepath, "exampleName")
を使ってアップロードしたいファイルを設定する必要があると思いますが、それについてはわかりません。実際には、単純なリクエストを試みても、ファイルを送信せずにTypeErrorを取得したことに気づいたということです。
EDIT2これは、同じエラーを返す変更されたコード、次のとおりです。
var XMLHttpRequest=require('xmlhttprequest').XMLHttpRequest ;
var FormData = require('form-data');
var data = new FormData();
data.append("key","value");
var xhr = new XMLHttpRequest();
xhr.open('POST', "octopi.local/api/files/");
xhr.send(data);
あなたはアップロードするファイルをどこで設定していますか? –
私は '非同期/同期'キーがここにあると思います。 POSTを同期に設定すると、コールバック関数が返された後に、すべてのコードが実行されます。逆に、非同期モードでは、コールバック後のコードが実行されてから復帰します。したがって、結果が必要な場合は、エラーメッセージが表示されません。 :コールバック内で別のコールバックを呼び出して目的のアクションを実行しない限り、方法がないと思います。 –
@VasilDininski:実際には、私は実際にドキュメントを理解していません。 form.append( "filename"、filepath、 "exampleName")を使ってアップロードしたいファイルを設定する必要があると思いますが、それについてはわかりません。実際には、単純なリクエストを試みても、ファイルを何も送信せずにTypeErrorを受け取ったことに気付いたのです。 –