2017-10-13 4 views
0

私はファイルのアップロードを行っているノードのバックエンドを持っています。私にとっては以下のように動作します:ノードの要求ファイルのアップロードで受け入れられる形式にCSS文字列を変換する

var options = { 
    method: 'POST', 
    uri: 'xxx', 
    formData: { 
     file: { 
      value: fs.createReadStream('new1.css'), 
      options: { 
       contentType: 'text/css' 
      } 
     } 
    } 
}; 

let resp: any = await request(options); 

しかし、私の場合、上記のように私が読むことができるファイルはありません。私はちょうどCSS文字列を持つことになります。私のCSS文字列をfs.createReadStream( 'new1.css')に似た形式に変換するにはどうすればいいですか?

私は以下の回答からアプローチを試みましたが、私にとってはうまくいきませんでした。 IはJSON.stringify(fs.createReadStream( 'new1.css'))が印刷しようとした出力である:

{"_readableState":{"objectMode":false,"highWaterMark":65536, 
"buffer":{"head":null,"tail":null,"length":0}, 
"length":0, 
"pipes":null, 
"pipesCount":0, 
"flowing":null, 
"ended":false, 
"endEmitted":false, 
"reading":false, 
"sync":true, 
"needReadable":false, 
"emittedReadable":false, 
"readableListening":false, 
"resumeScheduled":false, 
"defaultEncoding":"utf8", 
"ranOut":false, 
"awaitDrain":0, 
"readingMore":false, 
"decoder":null, 
"encoding":null}, 
"readable":true, 
"domain":null, 
"_events":{}, 
"_eventsCount":1, 
"path":"new2.css", 
"fd":null, 
"flags":"r", 
"mode":438, 
"autoClose":true, 
"bytesRead":0} 

Iはまた、JSON.stringify(CSS)を印刷して出力する。

{"_readableState":{"objectMode":false,"highWaterMark":16384, 
"buffer":{"head":{"data":{"type":"Buffer","data":[98,111,100,121,32,123,125]},"next":null}, 
    "tail":{"data":{"type":"Buffer","data":[98,111,100,121,32,123,125]},"next":null},"length":1}, 
"length":7, 
"pipes":null, 
"pipesCount":0, 
"flowing":null, 
"ended":true, 
"endEmitted":false, 
"reading":false, 
"sync":true, 
"needReadable":false, 
"emittedReadable":true, 
"readableListening":false, 
"resumeScheduled":false, 
"defaultEncoding":"utf8", 
"ranOut":false, 
"awaitDrain":0, 
"readingMore":true, 
"decoder":null, 
"encoding":null}, 
"readable":true, 
"domain":null, 
"_events":{}, 
"_eventsCount":0} 

問題の原因となっている違いがわかりません。そして、それは利用のNode.js Stream API

答えて

0

、あなたのCSS

var Readable = require('stream').Readable 
var css = new Readable 
css.push('body {}') // your css string 
css.push(null)  // indicates the end of the stream 


var options = { 
    method: 'POST', 
    uri: 'xxx', 
    formData: { 
     file: { 
      value: css, 
      options: { 
       contentType: 'text/css' 
      } 
     } 
    } 
}; 
let resp: any = await request(options) 
+0

FarnabazをReadableストリームを作成し、プッシュする修正する方法を、私はこのアプローチを試みたが、私は、サーバーから500エラーを取得します。しかし、fs.createReadStream( 'new1.css')を使ってすべてうまく動作します。 – user1892775

+0

@ user1892775ここにサーバーログを貼り付けることはできますか? – Farnabaz

+0

ファルナバス、私はそのサーバーにアクセスしていない、少なくとも今はない。私が見ることができるのは、私が受け取る500のエラーです。その間にこれをデバッグする他の方法はありますか? – user1892775

関連する問題