node.js图片上传把路径传给mongodb数据库

21 篇文章 0 订阅
11 篇文章 0 订阅
var multer = require('multer')


var storage = multer.diskStorage({

destination: function (req, file, cb) {

cb(null, './public/uploads')

}, filename: function (req, file, cb) {

var exts = file.originalname.split('.')

var ext = exts[exts.length - 1]

var tmpname = (new Date()).getTime() + parseInt(Math.random() * 9999)

cb(null, `${tmpname}.${ext}`)

}

})


var upload = multer({

storage: storage

})


router.post('/upload', upload.single('hehe'), function (req, res) {

var { size, mimetype, path } = req.file

var types = ['jpg', 'jpeg', 'png', 'gif']//运行上传的类型

var tmpType = mimetype.split('/')[1]

if (size > 5000000) {

return res.send({ err_code: -1, message: '尺寸过大' })

} else if (types.indexOf(tmpType) == -1) {

return res.send({ err_code: -2, message: '类型错误' })

} else {

res.status(200).json({

err_code: 0,

message: 'ok',

img:req.file.path

})

}

})

router.post('/article', function (req, res) {

var body = req.body

new Article(body).save(function (err, data) {

if (err) {

res.status(500).json({

err_code: 500,

message: 'ok'

})

}

res.status(200).json({

err_code: 0,

message: 'ok'

})

})

})



记得安装multer

 

	<div class="layui-fluid">
		<div class="layui-row">
				<form class="layui-form" id="article_add" action="/article" method="POST">
				<div class="layui-form-item">
						<label for="title" class="layui-form-label">
							<span class="x-red">*</span>文章标题</label>
						<div class="layui-input-inline">
							<input type="text" placeholder="请输入标题" id="title"  name="title" required="" lay-verify="required"
							 autocomplete="off" class="layui-input"></div>
					</div>
		
					<div class="layui-form-item layui-form-text">
						<label for="content" class="layui-form-label">
							<span class="x-red">*</span>文章内容</label>
							
							<div class="layui-input-block">
									<textarea placeholder="请输入内容"  id="content" name="content"required="" lay-verify="required" class="layui-textarea" style="height: 300px;"></textarea>
								</div>
					</div>
					<input type="text" name="Image" id="Image" value="" src="" hidden/>
					<button class="layui-btn" style="margin-left: 110px;">发布</button>
					</form>


		<input type="file" name="" id="file" style="position: absolute;

		bottom: 35px;
		
		left: 180px;" />
		<button class="layui-btn" onclick="doUpload()" style="position: absolute;
		bottom: 30px;
		left: 380px;">图片上传</button>

<br>
		<img src="" alt="" id="show" style="width: 300px;position: absolute;
		left: 125px;">


	</div>
	</div>
	<script src="/node_modules/jquery/dist/jquery.js"></script>
	<script>
			function doUpload(){
			var file = $('#file').get(0).files[0]
			var formdata = new FormData()
			formdata.append('hehe', file)
			console.log(file)
			$.ajax({
				url: '/upload',
				type: 'post',
				cache: false,
				data: formdata,
				processData: false,
				contentType: false,
				success: function(data) {
					var err_code = data.err_code
					if (err_code===0) {
						layer.alert("上传成功", {
									icon: 6
								})
						$('#Image').attr('value',`${data.img}`)
						$('#show').attr('src',`${data.img}`)
					} else if(err_code===-1){
						layer.alert("图片尺寸太大", {
									icon: 2
								})
					}else if(err_code===-2){
						layer.alert("类型不合格", {
									icon: 2
								})
					}
				}
	
			})
			}
		</script>
	<script>
		layui.use(['form', 'layer'],
			function () {
				$ = layui.jquery;
				var form = layui.form,
					layer = layui.layer;


			});
	</script>
	<script>
				$('#article_add').on('submit', function (e) {
					e.preventDefault()
					var formData = $(this).serialize()
					$.ajax({
						url: '/article',
						type: 'post',
						data: formData,
						dataType: 'json',
						success: function (data) {
							var err_code = data.err_code
							if (err_code === 0) {
								layer.alert("发布成功", {
									icon: 6
								},
									function () {
										//关闭当前frame
										xadmin.close();
		
										// 可以对父窗口进行刷新 
										xadmin.father_reload();
									});
							} else if (err_code === 500) {
								layer.alert('服务器忙,请稍后重试!')
							}
						}
					})
				})
			</script>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值