mysql 存储用户头像_node+vue用户头像处理上传并保存

妖狐艹你老母 2022-11-05 03:06 459阅读 0赞

2017年7月14日19:21:29 ,最近做个网站,需要有用户头像裁剪上传功能,具体流程是用户在本地选择图片,前端将图片裁剪好发给后端,后端接收到图片将它保存起来,并将信息存入数据库。

先说一下环境后端是express,前端是vue-cli2.0 做的单文件网站。

模块选用:前端用 vue-image-crop-upload^1.3.14 后端用multer^1.3.0”,数据库mysql,在这里不是重点省去。

首先请安装这两个模块,然后上代码了:

前端代码:

``

``

v-model="show"

``

@crop-success="cropSuccess" /一些钩子函数/

``

@crop-upload-success="cropUploadSuccess"

``

@crop-upload-fail="cropUploadFail"

``

:width="200" /最终裁剪出来的图片的大小/

``

:height="200"

``

url="/api/profile"/后端服务地址/

``

img-format="png">

``

``

``

``

import myUpload from 'vue-image-crop-upload/upload-2.vue';

``

export default {

``

name: 'imgUp',

``

data(){

``

return{

``

show: false,

``

imgDataUrl: ''

``

}

``

},

``

components: {

``

'my-upload': myUpload

``

},

``

methods: {

``

toggleShow() {

``

this.show = !this.show;

``

},

``

cropSuccess(imgDataUrl, field){

``

this.imgDataUrl = imgDataUrl;

``

},

``

cropUploadSuccess(jsonData, field){

``

},

``

cropUploadFail(status, field){

``

}

``

}

``

}

``

后端代码:

var apiRouter = express.Router();

``

//4. 图片上传

``

var multer = require('multer')

``

var storage = multer.diskStorage({

``

destination: function (req, file, cb) {

``

cb(null, './uploads') /上传文件放入的路径,这个根路径是项目的根路径。/

``

},

``

filename: function (req, file, cb) {

``

var fileFormat = (file.originalname).split(".");

``

cb(null, file.fieldname + '-' + Date.now() + "." + fileFormat[fileFormat.length - 1]);

``

}

``

});

``

var upload = multer({

``

storage: storage

``

});

``

/upload.single('avatar'), avatar是图片的name/

``

apiRouter.post('/profile', upload.single('avatar'), function (req, res, next) {

``

if (req.file) {

``

res.send({res:"图片上传成功"})

``

}

``

});

``

app.use('/api', apiRouter);

``

到此完成,这两个模块完美的融合在一起,不需要修改代码。Multer模块说只支持用于处理 multipart/form-data 类型的表单数据,所以在找前端模块的时候有点担心,然后查看了vue-image-crop-upload的代码,发现作者用的是formDate打包的文件,然后用XMLHttpRequest上传的,这样处理两个模块就兼容了,无需担心。

发表评论

表情:
评论列表 (有 0 条评论,459人围观)

还没有评论,来说两句吧...

相关阅读

    相关 vue裁剪头像

    之前,在用vue写一个上传头像的模块,里面需要对头像进行拖动裁剪设置,可是后台却跟我说他只要类似于input上传图片的内容。前端是没有办法操作本地图片的,一般也只能是传图片+裁