Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >NodeJs——使用axios下载上传文件

NodeJs——使用axios下载上传文件

作者头像
思索
发布于 2024-08-16 06:55:47
发布于 2024-08-16 06:55:47
20954
代码可运行
举报
运行总次数:4
代码可运行

前言

好记性不如烂笔头~

内容

axios封装 | request.js

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import axios from "axios";
import staticPath from "../config/staticPath";
import {getConfig} from "./config";


const request = axios.create({
    baseURL: staticPath.BaseApi,
    timeout: 20000,
    adapter: require('axios/lib/adapters/http')
})

// 异常拦截处理器
const errorHandler = error => {
    error.response && console.error(`errorHandler: ${error.response.status}, ${error.response.data.message}`)
    return Promise.reject(error)
}

// 请求拦截器
request.interceptors.request.use(config => {
    if (!config.headers['Content-Type'])  config.headers['Content-Type'] = 'application/json'
    // 我这里存在多种baseURL的情况,所以根据渠道来进行判断使用不同的域名
    if (config.requestBase) {
        let configData = getConfig()xxx
        if (staticPath.Channel === 'channel1xxxx') config.baseURL = configData.xxx_oss_host || ''
        if (staticPath.Channel  === 'default') config.baseURL = configData.xxxx_upload_host || ''
    }

    return config
}, errorHandler)

// 响应拦截器
request.interceptors.response.use(response => {
    if (response.data.streams && response.data.format) {
        return response.data
    }
    // 我这里response.data.success是结合服务端自定义的返回字段来进行判断,不涉及可以直接干掉
    if (response.status !== 200 || !response.data.success) {
        return Promise.reject(response.data)
    }
    return response.data
}, errorHandler)


export default request

API封装 | api.js

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import request from '../utils/request';
import fs from "fs";
const FormData = require('form-data')


const Api = {
    getConfig : '/im/machines/new',
    uploadFile: '/file/upload',
    getFileLink: '/file/getResources',
}

/**
 * 获取小助手配置信息
 * @param {object} data 请求数据
 * @return {AxiosPromise}
 */
export function getConfigInfo(data) {
    return request({
        url: Api.getConfig,
        method: 'POST',
        data: data
    })
}

/**
 * 文件下载
 * @param {string} url 文件链接地址
 * @return {AxiosPromise}
 */
export function getFileDownloadURL(url) {
    return request({
        url: url,
        method: 'GET',
        responseType: 'stream'
    })
}

/**
 * 上传文件
 * @param {string} filePath 本地文件路径
 * @return {AxiosPromise}
 */
export function uploadMsgFile(filePath) {
    let formData = new FormData()
    formData.append('multipartFile', fs.createReadStream(filePath))
    let headers = formData.getHeaders()
    return request({
        url: Api.uploadFile,
        method: 'POST',
        data: formData,
        headers: headers,
        requestBase: true
    })
}

/**
 * 获取文件下载地址
 * @param {string} params 文件的KEY
 * @return {AxiosPromise}
 */
export function getFileLink(params) {
    return request({
        url: Api.getFileLink,
        method: 'GET',
        params: params,
        requestBase: true
    })
}

使用示例

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 正常使用
import {getConfigInfo} from "../api";
getConfigInfo({...staticPath.WeComHelperInfo}).then(r => { console.log(r) }).catch(err => console.error(`getConfigInfo: 获取配置文件请求异常${JSON.stringify(err)}`))

// 下载文件
 const streamWriter = fs.createWriteStream(localFile)
 let response = await getFileDownloadURL(url).catch(error => console.error(`getFileDownloadURL: 下载文件异常${JSON.stringify(error)}`))
 response.pipe(streamWriter)
 streamWriter.on('finish', () => {console.log('下载完成') })
 streamWriter.on('error', error => console.error(`streamWriter: 文件写入异常${error}`))
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-04-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
5 条评论
热度
最新
为什么跑出来不一样呢,从pca可视化开始就看到我的PC1的positive和大佬的是反着的,求指教
为什么跑出来不一样呢,从pca可视化开始就看到我的PC1的positive和大佬的是反着的,求指教
22点赞举报
我也是反着的,而且我从过滤那一步开始他的数目就不对 ,
我也是反着的,而且我从过滤那一步开始他的数目就不对 ,
回复回复点赞举报
是啊我也觉得有点奇怪,筛选数目不对还可能是数据更新的问题,但是这个按默认数据的降维应该不回出错才对,
是啊我也觉得有点奇怪,筛选数目不对还可能是数据更新的问题,但是这个按默认数据的降维应该不回出错才对,
回复回复点赞举报
sce.all <- readRDS("GSE163558.rds"),这个文件在哪呀
sce.all &lt;- readRDS("GSE163558.rds"),这个文件在哪呀
11点赞举报
在第一步数据下载处理完,使用write_rds(sce.all,file = "GSE163558.rds")保存即可
在第一步数据下载处理完,使用write_rds(sce.all,file = "GSE163558.rds")保存即可
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
免疫抑制剂-TNBC单细胞数据集聚类分群
然后就是花费了从早上9点至下午4点的运行过程,流程是初级流程,时间是好几倍,这时间可以跑完别的一整篇了,果然不可高攀。 乍一看去,这些图不算难呀,可能这个PI和TI的设定得多花点时间琢磨一下
生信菜鸟团
2023/09/09
4950
免疫抑制剂-TNBC单细胞数据集聚类分群
日光性皮炎和银屑病单细胞数据集复现
单细胞转录组学表明,IL-17A/F 在日光性皮炎和银屑病中具有不同的上游驱动力。
生信菜鸟团
2024/04/11
2630
日光性皮炎和银屑病单细胞数据集复现
单细胞测序—标准流程代码(1)
现在的单细胞测序很少是单个样本测序了,一般是多个样本。这里用ifnb.SeuratData包中的ifnb示例数据来模拟单细胞测序多样本分析流程。
sheldor没耳朵
2024/08/20
7950
单细胞测序—标准流程代码(1)
一篇单细胞文献复现及代码部分更新
https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE151177
生信菜鸟团
2023/12/14
1.7K0
一篇单细胞文献复现及代码部分更新
RUNX1在B前体急性白血病细胞中的过表达(readMM函数活学活用)
接下来就可以读取它们啦,有意思的是每个样品都需要独立的读取3个文件,合并成为一个单细胞Seurat对象,操作技巧满满!
生信技能树
2021/12/04
6790
RUNX1在B前体急性白血病细胞中的过表达(readMM函数活学活用)
鼻咽癌患者肿瘤部位和外周血的单细胞组成差异
在单细胞大行其道的近两年,我也安排了学徒们做了几百个有表达量矩阵可以下载的单细胞转录组文献图表复现,挑选其中100个成功的案例,提供代码给大家,希望对大家有帮助!
生信技能树
2021/04/29
1.1K0
鼻咽癌患者肿瘤部位和外周血的单细胞组成差异
Github代码文献复现之卵巢和子宫内膜癌(五)|| 数据合并, 标准化、特征选择以及聚类
今天继续来学习他的代码wiki上的:https://github.com/RegnerM2015/scENDO_scOVAR_2020/wiki
生信技能树
2025/03/03
940
Github代码文献复现之卵巢和子宫内膜癌(五)|| 数据合并, 标准化、特征选择以及聚类
单细胞转录组分析揭示胃肠道间质瘤和微环境的异质性
文章标题:《Single-cell transcriptome analysis revealed the heterogeneity and microenvironment of gastrointestinal stromal tumors》
生信技能树
2021/12/10
9080
单细胞转录组分析揭示胃肠道间质瘤和微环境的异质性
单细胞水平看小鼠胰腺导管腺癌进展中的细胞异质性
文章链接:https://insight.jci.org/articles/view/129212
生信技能树
2021/12/10
9000
单细胞水平看小鼠胰腺导管腺癌进展中的细胞异质性
学徒单细胞作业:敲除Dnmt1基因对小鼠肺部发育的影响
另外,前两天在《生信技能树》和《单细胞天地》等公众号都推出来了一个10X单细胞转录组钜惠套餐,详见:2个分组的单细胞项目标准分析,原价15~20万的6个10x单细胞转录组套餐,现价10万。其实本文介绍的就是:敲除Dnmt1基因前后分组的两个单细胞转录组数据分析。
生信技能树
2021/11/23
9500
画出像烟花一样的单细胞umap图,原因竟然是?
GSE125527数据:https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE125527。
生信技能树
2025/02/05
1700
画出像烟花一样的单细胞umap图,原因竟然是?
BD单细胞测序数据分析流程(全)
BD和10x是两种常见的单细胞测序技术平台。我们已经分享了很多的10x 测序的教程。
生信菜鸟团
2024/04/11
2.7K0
BD单细胞测序数据分析流程(全)
单细胞腹主动脉瘤(Abdominal Aortic Aneurysm)文献复现
生信菜鸟团
2023/08/23
4010
单细胞腹主动脉瘤(Abdominal Aortic Aneurysm)文献复现
根据线粒体基因进行过滤
上篇推文中对ncount_RNA 和nFeature_RNA进行了可视化,然后基于可视化结果进行了阈值的判断,并且也给大家分享了在实际分析中的应用
生信技能树jimmy
2024/05/01
5540
根据线粒体基因进行过滤
ncount_RNA 和nFeature_RNA辅助过滤
上次给大家简单整理了一下细胞鉴定曲线图理解,里面使用nCount_RNA或者nFeature_RNA在R语言里面绘制细胞鉴定曲线,找到一个合适的cutoff值,进行了一个初步的质控。
生信技能树jimmy
2024/04/28
6.7K0
ncount_RNA 和nFeature_RNA辅助过滤
单细胞数据重新挖掘会有什么意外惊喜吗?(IF=12.4/Q1)
今天分享的一篇文章,本来是看看肾脏组织中的各种上皮细胞的分类,但是注释的时候却有个小插曲,下面来看看~
生信技能树
2025/04/14
1030
单细胞数据重新挖掘会有什么意外惊喜吗?(IF=12.4/Q1)
单细胞实战之样本整理,细胞注释和部分图表绘制---从入门到进阶(初级篇1)
在完成了马拉松课程后,我们应该对单细胞分析有了基本了解。接下来,我们将开启新的篇章——单细胞实战:从入门到进阶。
凑齐六个字吧
2025/02/08
2290
单细胞实战之样本整理,细胞注释和部分图表绘制---从入门到进阶(初级篇1)
中性粒细胞的质量值到底是多低呢?
今天来看看一篇文献中使用BD单细胞测序技术,鉴定到的一大群中性粒细胞,这就来分析看看!多一点对中性粒细胞的实际认知~
生信技能树
2025/04/11
630
中性粒细胞的质量值到底是多低呢?
学徒作业|GSE217845-胰腺癌中的巨噬细胞细分亚群
学徒作业的要求是:从上面的数据集GSE217845里面的10个胰腺癌的10x技术单细胞转录组数据的第一层次降维聚类分群里面提前髓系免疫细胞后,继续细分降维聚类拿到里面的巨噬细胞,然后继续细分巨噬细胞看看能否复现文章里面的:
生信技能树jimmy
2024/04/15
4080
学徒作业|GSE217845-胰腺癌中的巨噬细胞细分亚群
用V5版本Seurat做单细胞数据文献复现
V5和V4的代码区别主要在前期导入数据和其中的数据有些许改变,曾老师在之前的几篇推文还有直播中都有提到。
生信菜鸟团
2024/01/19
3.3K0
用V5版本Seurat做单细胞数据文献复现
推荐阅读
相关推荐
免疫抑制剂-TNBC单细胞数据集聚类分群
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验