图片上传(二进制文件流)

业务需求:
  • 文件上传在项目开发过程中是必不可少的一项功能。目前大多数文件上传都是采用文件流的形式进行上传。随着技术的进步,云服务技术的产生,现在上传文件相比原来更迅速、更方便,对上传文件的管理较之前来说方便了许多;
  • 为兼顾原有的项目,上传文件没有采用现在使用比较多的阿里云oss文件直传,而是采用的后台辅助存储上传的形式来进行文件的存储。相对来说,文件上传比较慢,等待时间有点长。获取文件不像oss直传那样返回一个绝对的地址链接,而是返回的一个文件的key,通过指定的参数拼接来换取图片地址;
  • 此次简称为‘文件流上传’,前期开发的时候出现了一些错误,现将原有的文件流上传文件的具体实现步骤做相应分析处理,以便日后开发过程中使用。
效果图:

在这里插入图片描述

  • :图片上传成功后,会在右侧灰色图片区域内进行展示。
布局代码一:

在这里插入图片描述

  • 基于【 Vue 】
  • 采用elementUIel-input标签与input文件上传标签相结合的方式;
  • wtLoading为UI框架的el-button按钮loading加载状态。
样式代码:
// 上传按钮样式布局
.uploadBtn {
		display: block;
		height: 100%;
		width: 100%;
		position: relative;
		overflow: hidden;
	}

.uploadBtn>input[type="file"] {
		width: 100%;
		opacity: 0;
		cursor: pointer;
		position: absolute;
		top: 0;
		right: 0;
		bottom: 0;
		left: 0;
}
实现代码【 vue 】:
// 方式一:基于vue
uploadImg(file) {
	// 采用formData格式
	let fd = new FormData();
	fd.append("imgData", file);
	this.$axios
		.post("图片上传api", fd)
		.then(res => {
			let data = res.data;
			if (data.code == "1") {
				// 返回生成的图片ID
				this.imgGid = data.imgGid;
				// 拼接图片Id,获取绝对地址
				this.imageUrl = this.pic + data.imgGid;
				console.log('上传成功!')
			} else {
				console.log('上传失败!')
			}
		});
}
布局代码二:

在这里插入图片描述

  • 基于【 JavaScript 】
  • 借助jQueryform表单提交实现二进制流文件上传;
  • 上传的过程中会动态加载一张loading.gif动态图,当图片上传完成或者上传失败时候移除loading图。
实现代码【 JavaScript 】:
const saveReport = function() {
	/* jQuery.form表单提交数据 */
	$('#addImg').ajaxSubmit({
		type: 'post',
		url: '上传接口api',
		data: {
			picType: 'jpg' // 图片格式
		},
		dataType: 'json',
		success: function(res) {
			if (res.code == 1) {
				/* 生成的图片ID */
				avatars = res.imgGid;
				/* 拼接回显图片 */
				$('#upJPG').prepend('<img src="' + res.imgGid + '" class="imgStyle" />');
				/* 删除图片 */
				$('.close').on('click', function(e) {
					/* 阻止图片跳转 */
					e.stopPropagation();
					/* 对dom的操作 */
				});
			}
		},
		error: function(err) {
			hintCard('网络错误');
		}
	});
	/* 防止表单自己再次提交,并跳转页面 */
	return false;
}
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值