2017-10-13 1 views
0

Ich habe ein Knoten-Backend, wo ich eine Datei hochladen. die folgenden Werke für mich:Convert CSS-String in ein Format von Node Request Datei Upload akzeptabel

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

let resp: any = await request(options); 

aber in meinem Fall, werde ich nicht sein, eine Datei, die ich wie oben lesen konnte. Ich werde nur eine CSS-Zeichenfolge haben. Wie kann ich meine CSS-String in ein ähnliches Format wie fs.createReadStream ('new1.css') konvertieren

Ich versuchte Ansatz aus der Antwort unten, aber es funktioniert nicht für mich. Ich versuchte, die JSON.stringify (fs.createReadStream ('new1.css')) gedruckt und ausgegeben wird:

{"_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 gedruckt auch die JSON.stringify (CSS) und die Ausgabe ist:

{"_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} 

Ich bin mir nicht sicher, welcher Unterschied das Problem verursacht. Und wie sie zu beheben es

Antwort

0

Verwenden Node.js Stream API, erstellen Sie einen Readable Stream und schieben Sie Ihr 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, habe ich versucht, diesen Ansatz, aber ich nur einen 500-Fehler vom Server erhalten. Alles funktioniert gut mit fs.createReadStream ('new1.css'). – user1892775

+0

@ user1892775 könnten Sie Ihr Serverprotokoll hier einfügen? – Farnabaz

+0

Farnabaz, ich habe keinen Zugriff auf diesen Server, zumindest jetzt nicht. Alles, was ich sehen kann, ist der 500 Fehler, den ich erhalte. Gibt es eine andere Möglichkeit, dies in der Zwischenzeit zu debuggen? – user1892775

Verwandte Themen