Lire le corps d'une Extraction Promesse
Je suis sûr que cela a une réponse simple, mais pour la vie de moi je ne peux pas comprendre comment le faire.
J'ai l'explicite de point de terminaison pour le téléchargement sur le Google Cloud storage. Il fonctionne très bien et la réponse de l'api de google me donne un nom de fichier unique que je veux transmettre à mon front end:
app.post('/upload', (req, res) => {
var form = new formidable.IncomingForm(),
files = [],
fields = [];
form
.on('field', function(field, value) {
fields.push([field, value]);
})
.on('file', function(field, file) {
files.push([field, file]);
})
.on('end', function() {
console.log('-> upload done');
});
form.parse(req, function(err, fields, files){
var filePath = files.file.path;
bucket.upload(filePath, function(err, file, apiResponse){
if (!err){
res.writeHead(200, {'content-type': 'text/plain'});
res.end("Unique File Name:" + file.name);
}else{
res.writeHead(500);
res.end();
}
});
});
return;
});
- Je atteindre ce point de terminaison par l'appel d'une fonction courte qui passe le fichier:
function upload(file) {
var data = new FormData();
data.append('file', file);
return fetch(`upload`,{
method: 'POST',
body: data
});
}
const Client = { upload };
export default Client;
Cette fonction est appelée de mon front-end comme ceci:
Client.upload(this.file).then((data) => {
console.log(data);
});
Cette dernière console.log(data)
journaux de la réponse à la console. Cependant, je ne vois nulle part la réponse que j'ai écrit en ("Unique File Name:" + file.name
)
Quelqu'un aurait-il des suggestions pour comment je peux récupérer cette info dans le corps de la réponse sur le côté client?
EDIT:
La data
ressemble à ça quand j'ai de la console.journal:
EDIT 2:
C'est la réponse que je reçois quand je POSTE un fichier de mon point de terminaison à l'aide de Facteur:
data
ressembler lorsque vous console.log
?Ajout d'une capture d'écran
merci je pense que je connais le problème, donnez-moi un sec
Qu'est-ce
fetch('[YOURENDPOINT]').then(response=>response.text()).then(data=>{ console.log(data);})
connecter à la console?
OriginalL'auteur quicklikerabbit | 2017-05-10
Vous devez vous connecter pour publier un commentaire.
Avis vous avez affaire à un Réponse de l'objet. Vous devez essentiellement lire le flux de réponse avec
Response.json()
ouResponse.text()
(ou par d'autres méthodes) afin de voir vos données. Sinon, votre corps de la réponse sera toujours apparaître comme un verrouillée lisible flux. Par exemple:Si cela vous donne des résultats inattendus, vous pouvez inspecter votre réponse avec Postman.
undefined
pour laconsole.log(data)
si j'utiliseresponse.text
ouresponse.blob
. J'obtiens une erreur de syntaxe si j'utilise la réponse.json:Uncaught (in promise) SyntaxError: Unexpected token U in JSON at position 0
. Je suis en train de penser à la 'U' est de mon "Unique", donc je pense que vous êtes sur la bonne voieAussi, vous ne seriez pas en mesure de voir ce à partir de la capture d'écran que j'ai posté, mais l'expansion de la
...
pour lalocked
élément dans laReadableStream
litfalse
Qu'obtenez-vous lorsque vous atteignez votre point de terminaison avec quelque chose comme Facteur?
Très probablement pu être. Je vais continuer à essayer et poster ma réponse quand je l'obtenir. Merci pour votre aide, très apprécié.
J'ai juste eu à remplacer
.json()
avec.text()
, c'est la solution dans mon cas. Merci.OriginalL'auteur Gabe Rogan
@GabeRogan m'a donné la réponse (et j'ai eu une faute de frappe, comme prévu)
Voici mon code mis à jour pour la fin de devant qui renvoie la réponse du corps du texte:
body
est une chaîne qui indique "Nom de Fichier Unique: [NOM de FICHIER]"EDIT:
Voici une bonne explication de l'Extraction de l'API et de la lecture de la réponse que vous obtenez de la promesse de l'objet: https://css-tricks.com/using-fetch/
OriginalL'auteur quicklikerabbit