跨域上傳一直出錯(cuò),我在后臺(tái)打斷點(diǎn)一直進(jìn)不去,試了好多種都沒有用,一直報(bào)錯(cuò)
POST http://127.0.0.1:8888/api/upload 404 (Not Found)
我感覺是請(qǐng)求頭的問題,項(xiàng)目其他功能配置都正常,都是上傳不對(duì),初學(xué)者不知道怎么配,希望大神幫忙答疑解惑,謝謝 T_T T_T T_T
//后端入口
const Koa = require("koa");
const app = new Koa();
const Router = require("koa-router");
const router = new Router({ prefix: "/api" });
//文件上傳配置
const koaBody = require('koa-body');
app.use(koaBody({
multipart: true,
}));
const bodyParser = require("koa-bodyparser");
app.use(bodyParser());
//跨域訪問配置
const cors = require("koa2-cors");
app.use(
cors({
origin: function(ctx) {
return "http://localhost:8080";
},
exposeHeaders: ["WWW-Authenticate", "Server-Authorization"],
maxAge: 3600,
allowMethods: ['GET', 'PUT', 'POST'],
allowHeaders: ["Content-Type", "Authorization", "Accept"]
})
);
const fileIO = require("./middleware/file.js");
//路由
router.post("/upload'", fileIO.Upload);
app.use(router.routes()).use(router.allowedMethods()); //加載路由中間件
app.listen(8888, () => {
console.log("The server is running at http://localhost:" + 8888);
});
fileIO.Upload
//file.js
const Upload = async (ctx) => {
const file = ctx.request.body.files.file; // 獲取上傳文件
const reader = fs.createReadStream(file.path); // 創(chuàng)建可讀流
const ext = file.name.split(".").pop(); // 獲取上傳文件擴(kuò)展名
const upStream = fs.createWriteStream(
`upload/${Math.random().toString()}.${ext}`
); // 創(chuàng)建可寫流
reader.pipe(upStream); // 可讀流通過管道寫入可寫流
return (ctx.body = "上傳成功");
};
const fileIO = {
Upload
};
module.exports = fileIO;
前端頁面
<template>
<div>
<form>
<input type="file" value="選擇文件" @change="getFile($event)">
<input type="button" value="上傳到服務(wù)器" @click="tosubmit">
</form>
</div>
</template>
<script>
import axios from "../axios/axios";
export default {
data() {
return {
file: ""
};
},
methods: {
getFile(event) {
this.file = event.target.files[0];
console.log(this.file);
},
tosubmit() {
event.preventDefault();
let formData = new FormData();
formData.append("file", this.file);
console.log(formData.get("file"));
let config = {
headers: {
"Content-Type": "multipart/form-data"
},
};
axios.upload(formData, config)
.then(({ date }) => {
console.log(date);
})
.catch(err => {
console.log(err);
});
}
}
};
</script>
axios配置
import axios from "axios";
import router from "../router";
//創(chuàng)建axios實(shí)例
var instance = axios.create({
timeout: 5000,
headers: { "Content-Type": "application/json;charset=UTF-8" },
baseURL:'http://127.0.0.1:8888'
});
//request攔截器
instance.interceptors.request.use(config => {
//判斷是否存在token,如果存在的話,則每個(gè)http header都加上token
if (store.state.token) {
config.headers.Authorization = `token ${store.state.token}`;
}
return config;
});
export default {
upload(data,config){
return instance.post("/api/upload",data,config);
}
};
還有個(gè)疑惑就是為什么app.use(koaBody())如果寫在app.use(bodyParser())后面的話就直接登錄不了了,很疑惑,哎,困難重重.......
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國一站式人才培養(yǎng)平臺(tái)、一站式人才輸送平臺(tái)。2014年4月3日在美國成功上市,融資1
北大課工場是北京大學(xué)校辦產(chǎn)業(yè)為響應(yīng)國家深化產(chǎn)教融合/校企合作的政策,積極推進(jìn)“中國制造2025”,實(shí)現(xiàn)中華民族偉大復(fù)興的升級(jí)產(chǎn)業(yè)鏈。利用北京大學(xué)優(yōu)質(zhì)教育資源及背
博為峰,中國職業(yè)人才培訓(xùn)領(lǐng)域的先行者
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動(dòng)互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺(tái)面向?qū)ο箝_發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對(duì)瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。