2017-01-02 2 views
0

私は、onlinefontconverter.com APIを使用して、ttfフォントを他のフォーマットに変換するツールを開発しています。だから私はpropper tar.gzアーカイブを入手することに問題があります。私はファイルを取得するが、OSはアーカイブが破損していると私に言った。だから私はどのように応答の本文からファイルを保存できますか?ここで私が使用したコードは次のとおりです。ここでunarstレスポンスから.tar.gzアーカイブを取得するには?

'use strict'; 
const unirest = require('unirest'); 
const fs = require('fs'); 
const file = fs.createWriteStream('./onlinefontconverter.com.tar.gz'); 

unirest.post("https://ofc.p.mashape.com/directConvert/") 
    .header("X-Mashape-Key", "key") 
    .attach("file", fs.createReadStream('./Roboto-Thin.ttf')) 
    .field("format", "svg") 
    .end((result) => { 
    file.write(result.body, {encoding:'binary'}); 
    }); 

は、ヘッダーです:

{ 'accept-ranges': 'bytes', 
 
    'access-control-allow-headers': 'X-Mashape-Key', 
 
    'access-control-allow-methods': 'POST, OPTIONS', 
 
    'access-control-allow-origin': '*', 
 
    'access-control-expose-headers': 'Content-Disposition', 
 
    'cache-control': 'public, max-age=0', 
 
    'content-disposition': 'attachment; filename="onlinefontconverter.com.tar.gz"', 
 
    'content-type': 'application/octet-stream', 
 
    date: 'Mon, 02 Jan 2017 18:52:34 GMT', 
 
    expires: '0', 
 
    'last-modified': 'Mon, 02 Jan 2017 18:52:34 GMT', 
 
    pragma: 'no-cache', 
 
    server: 'Mashape/5.0.6', 
 
    via: '1.1 vegur', 
 
    'content-length': '119251', 
 
    connection: 'Close' }

UPD: 私はunirestに問題がきたので、私は単純な要求に書き換えられました。

const file = fs.createWriteStream('./fonts.tar.gz'); 
 
const request = require('request'); 
 
var r = request.post({ 
 
    url:  'https://ofc.p.mashape.com/directConvert/', 
 
    headers: {'X-Mashape-Key' : 'key'}, 
 
}, function(error, response, body){ 
 
    // console.log(body); 
 
    // console.log(response.statusCode); 
 
    // console.log(response.headers); 
 

 
}); 
 
r.pipe(file); 
 
var form = r.form(); 
 
form.append('format', 'ttf'); 
 
form.append('my_file', fs.createReadStream('Aller_Rg.ttf'));

答えて

0

私は、これはunirest図書館における応答の間違ったエンコーディングの問題だと思います。このようなものを試してみてください(秘密鍵を隠す):

'use strict'; 
const fs = require('fs'); 

const request = require('request'); 

const formData = { 
    format: 'svg', 
    file: fs.createReadStream('./Roboto-Thin.ttf') 
} 

var buff = []; 
request.post({ url: "https://ofc.p.mashape.com/directConvert/", 
      formData: formData, 
      headers: { 
       "X-Mashape-Key": "SecretMashapeKey" 
      } 
      }) 
     .on('data', function(chunk) { 
      buff.push(chunk); 
     }) 
     .on('end', function() { 
      var data = Buffer.concat(buff); 
      fs.writeFileSync('onlinefontconverter.com.tar.gz', 
           data, 
           'binary'); 
     }); 
+0

ありがとう!私は自分自身で考え出した。私のコードは最初の投稿です。 –

関連する問題