使用 node.js 搭建本地服务模拟上传图片接口
- 初始化 node 环境 : npm init -y ;
- 下载 express 包 : npm i express -S;
- 下载 multer 包 : npm i multer -S;
- 新建文件 server.js 文件 ;
- 启动服务 : node server.js ;
node 代码
const express = require('express')
const multer = require('multer')
const fs = require ('fs')
const path1 = require('path')
const upload = multer({dest:'uploads/'})
const app = express()
app.use((req,res,next)=>{
// 设置跨域
res.set('Access-Control-Allow-Origin','*')
next()
})
// 设置静态资源文件夹为uploadsFile文件夹
app.use(express.static('uploadsFile'))
app.get('/',(req,res)=>{
res.send('返回Hello World')
})
app.post('/uploadImage',upload.single('pic'),function(req, res, next){
console.log(req,'----------------');
fs.renameSync(req.file.path, path1.join('uploadsFile', req.file.originalanme))
res.send(req.file.originalanme)
})
app.listen(3000,()=>{
console.log('服务已跑起');
})
页面代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="js/react.development.js"></script>
<script src="js/react-dom.development.js"></script>
<script src="js/babel.min.js"></script>
<script src="js/axios.min.js"></script>
</head>
<body>
<div id="root"></div>
<script type="text/babel">
class UploadImage extends React.Component{
constructor(props){
super(props)
this.state = {}
this.myRef = React.createRef()
}
fnUoloadImage = ()=>{
let uploadMsg = this.myRef.current.files[0]
let formDatas = new FormData()
formDatas.append('pic',uploadMsg)
axios.post('http://localhost:3000/uploadImage',formDatas,{
'headers':{
'Content-Type':'multipart/form-data'
},
responseTpe:'text',
}).then(res=>{
console.log(res);
})
}
render(){
return (
<div>
<input type="file" name='pic' ref={this.myRef} />
<input type="button" value="上传图片" onClick={ this.fnUoloadImage }/>
</div>
)
}
}
ReactDOM.render(<UploadImage />,document.getElementById('root'))
</script>
</body>
</html>