无法使用axios下载完整的csv文件

时间:2017-12-11 19:52:11

标签: csv download axios

我正在使用axios从Web服务下载csv文件,用户在下载文件之前需要对其进行身份验证。在请求配置中使用axio的auth选项提供凭证:

const axios = require('axios')
const fs = require('fs')

const url = 'someUrlWithEndpoint.php'

axios.get(url, {
    responseType: 'stream',
    auth: {
        username: 'user',
        password: 'pwd'
    },
})
.catch(error => {console.error('ERROR:', error)})
.then(res => {
  console.log(res.data)
  res.data.pipe(fs.createWriteStream('data.csv'))
})

身份验证似乎有效,因为我收到200 statusCode,并且有些数据会写入所需的文件data.csv。但是,下载的数据仅包含csv标题行。缺少其他数据。

手动下载数据(通过Web服务的用户界面),可以按预期提供正确的数据文件。

为了缩小使用axios的可能错误,我尝试下载另一个csv(用分号作为分隔符)文件,如下所示:

const axios = require('axios')
const fs = require('fs')

const url = 'https://raw.githubusercontent.com/Aratramba/ps-barbershop/master/examples/sample-semicolon.csv'

axios.get(url, {
    responseType: 'stream'
})
.catch(error => {console.error('ERROR:', error)})
.then(res => {
  res.data.pipe(fs.createWriteStream('download.csv'))
})

或更长的示例文件(使用逗号作为分隔符):

const axios = require('axios')
const fs = require('fs')

const url = 'http://samplecsvs.s3.amazonaws.com/Sacramentorealestatetransactions.csv'

axios.get(url, {
    responseType: 'stream'
})
.catch(error => {console.error('ERROR:', error)})
.then(res => {
  // console.log(res.data)
  res.data.pipe(fs.createWriteStream('foo.csv'))
})

下载csv文件的两个示例都像魅力一样。但是,如上所述,从我的Web服务下载所需的csv文件,仅提供包含第一个标题行的文件。您对从何处开始调试此问题有任何建议吗?

0 个答案:

没有答案