2017-09-09 21 views
0
var formData = { 
    name: 'TestDeck', 
    description: 'This is a test deck for my api', 
    private: false, 
    shareable: false, 
    ttsLanguages: [], 
    blacklistedSideIndices: [], 
    blacklistedQuestionTypes: [], 
    gradingModes: [], 
    imageAttribution: 'https://www.logogarden.com/wp-content/uploads/lg-index/Example-Logo-6.jpg', 
    imageFile: fs.readFile('retext.png', 'utf8') 
} 

function createDeck(connection) { 
    request.post({ 
     url: '<url>', 
     formData: formData, 
     headers: { 
     'Content-Type': 'multipart/form-data' 
     }, 
     json: true 
    }), 
    function(err, resp, body) { 

    } 
} 

エラーが表示されます。TypeError:最初の引数は文字列またはバッファでなければなりません。TypeError:最初の引数は文字列またはバッファでなければなりません。 Javascript

私は正直なところ、なぜ助けが必要なのか分かりません。

+0

'fs.readFile'が非同期メソッドであるため、' imageFile'が最も可能性が高いあなたはそれが – adeneo

答えて

1

コードにはいくつかの問題があります。

  1. フォームデータにブール値falseを送信しようとしているので、あなたはTypeError: First argument must be a string or Bufferを取得する - HTMLのフォームは、ブール値をサポートしていません。 HTMLでは、checkedチェックボックスはその値を送信し、uncheckedチェックボックスは値を送信します。

    false'FALSE'(文字列)に変更し、サーバー側で解析することができます。

  2. fs.readFile('retext.png', 'utf8')の使用は間違っています。フォームにファイルを添付するには、正しい方法はimageFile: fs.createReadStream('retext.png')です。

  3. formData: formDatarequest.post(...)に使用されている

    、HTTPリクエストのContent-Type自動的multipart/form-dataだろう、あなたは再びContent-Typeヘッダーを定義する必要はありません。

    さらに、json: trueを設定すると、Content-Typeapplication/jsonとなります。この競合により、requestモジュールが混乱し、一部のJavaScript環境で問題が発生する可能性があります。

  4. コールバック関数function(err, resp, body){...}request.post(...)の一部である必要があります。たぶんそれは誤字かもしれません。要約すると

、正しいコードは次のようになります。

var formData = { 
    name: 'TestDeck', 
    description: 'This is a test deck for my api', 
    private: 'FALSE', 
    shareable: 'FALSE', 
    ttsLanguages: [], 
    blacklistedSideIndices: [], 
    blacklistedQuestionTypes: [], 
    gradingModes: [], 
    imageAttribution: 'https://www.logogarden.com/wp-content/uploads/lg-index/Example-Logo-6.jpg', 
    imageFile: fs.createReadStream('retext.png') 
} 

function createDeck(connection) { 
    request.post({ 
    url: '<url>', 
    formData: formData 
    }, function(err, resp, body) { 

    }) 
} 
+0

はありがとうと思われるものではありません非常に、ちょうど私が必要なもの – MaTriX

関連する問題