我正在使用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文件,仅提供包含第一个标题行的文件。您对从何处开始调试此问题有任何建议吗?