2017-10-13 4 views
0

J'ai un nœud de backend où je fais un téléchargement de fichier. les travaux suivants pour moi:convertir chaîne css dans un format acceptable par téléchargement de fichier de demande de noeud

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

let resp: any = await request(options); 

Cependant, dans mon cas, je ne serai pas avoir un fichier que je pouvais lire comme ci-dessus. Je vais juste avoir une chaîne CSS. Comment puis-je convertir ma chaîne css dans un format similaire à fs.createReadStream ('new1.css')

J'ai essayé l'approche de la réponse ci-dessous, mais cela ne fonctionne pas pour moi. J'essayé imprimé le JSON.stringify (fs.createReadStream ('new1.css')) et la sortie est la suivante:

{"_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 également imprimé le JSON.stringify (CSS) et la sortie est la suivante:

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

Je ne suis pas sûr de la différence qui cause le problème. Et comment y remédier

Répondre

0

Utilisez Node.js Stream API, créez un flux Readable et poussez votre 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, j'ai essayé cette approche mais je reçois une erreur 500 du serveur. Tout fonctionne très bien avec fs.createReadStream ('new1.css'). – user1892775

+0

@ user1892775 pourriez-vous coller votre journal de serveur ici? – Farnabaz

+0

Farnabaz, je n'ai pas accès à ce serveur, au moins pas maintenant. Tout ce que je peux voir, c'est l'erreur 500 que je reçois. Y a-t-il un autre moyen de déboguer cela entre-temps? – user1892775