在项目中将图片上传到SM.MS报错 [vite] http proxy error

语言及配置:vue、vantui、vite

报错信息

[vite] http proxy error:
Error: read ECONNRESET
    at TLSWrap.onStreamRead (node:internal/stream_base_commons:217:20)

或者

[vite] http proxy error:
Error: connect ETIMEDOUT 2606:4700:3037::6815:532d:443
    at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1494:16)

解决办法

官方文档:SM.MS v2 API Docs。在官方文档中指定上传的Url是:https://sm.ms/api/v2/ ,但还是无法上传成功,最后将Url改为:https://smms.app/api/v2 成功解决。

页面代码

<template>
    <div class="upload-container">
        <van-uploader
            v-model="fileList"
            :max-count="1"
            :after-read="afterRead"
        />
        <div v-if="imgUrl" class="result">
            <p>上传成功,图片链接为:</p>
            <a :href="imgUrl" target="_blank">{{ imgUrl }}</a>
        </div>
        <div v-if="errorMsg" class="error">
            <p>上传失败,错误信息为:</p>
            <p>{{ errorMsg }}</p>
        </div>
    </div>
</template>

<script>
import axios from "axios";

export default {
    data() {
        return {
            fileList: [],
            imgUrl: "",
            errorMsg: "",
        };
    },
    methods: {
        afterRead(file) {
            // 创建表单数据对象
            let formData = new FormData();
            // 添加图片文件
            formData.append("smfile", file.file);
            // 发送 POST 请求到 sm.ms 的 API 地址
            axios.post("/useSMMS/upload", formData, {
                    headers: {
                        "Content-Type": "multipart/form-data",
                        "Authorization": " ", //这里填上自己账号的ApiTocken
                    },
                })
                .then((res) => {
                    // 处理响应数据
                    if (res.data.success) {
                        // 如果成功,显示图片链接
                        this.imgUrl = res.data.data.url;
                        this.errorMsg = "";
                    } else {
                        // 如果失败,显示错误信息
                        this.imgUrl = "";
                        this.errorMsg = res.data.message;
                    }
                })
                .catch((err) => {
                    // 处理异常情况
                    this.imgUrl = "";
                    this.errorMsg = err.message;
                });
        },
    },
};
</script>

<style scoped>
.upload-container {
    margin: 20px;
}
.result {
    color: green;
}
.error {
    color: red;
}
</style>

vite.config.ts解决跨域问题

module.exports = {
    server: {
        proxy: {
            '/useSMMS': {
                // target: 'https://sm.ms/api/v2',
                target: 'https://smms.app/api/v2',
                changeOrigin: true,
                rewrite: (path) => path.replace(/^\/useSMMS/, '') // 不可以省略rewrite
            }
        }
    }
}

注意:不建议在前端透露ApiTocken

注意:不建议在前端透露ApiTocken

注意:不建议在前端透露ApiTocken

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值