unicloud非常良心 个人开发者可以每个云空间免费10g存储 不限速。

可以做一个非常好用的网盘用。(也可以上传个人图片,但是千万不要滥用资源)。

代码实现

1.新建项目,新建云空间,绑定云空间(此处跳过,详细请点击)

2、代码实现

//核心方法
//file转化为 base64
makeBlob(file) {
	let reader = new FileReader();
	reader.readAsDataURL(file)
	console.log(reader)
	reader.onload = () => {
		//reader.result是base64文件

	}}

//上传base64文件
upBase64(base64){
uniCloud.uploadFile({
			filePath: base64,
			cloudPath: '自定义名字,可以从file.name中获取',
			success: (res) => {
				// console.log('成功', res)
				

			},
			fail: (err) => {
				// console.log('失败', err)
				uni.showToast({
					title: "上传失败,请重试!",
					icon: 'error'
				})
			},
			complete() {}
		});
}

3.总代码实现 实现可以拖动文件上传

<template>
	<view class="content">
		<div ref='select_frame' @click="xztp" class="up_div" ondragstart="return false">
		</div>

	</view>
</template>

<script>
	import card from '../../components/card.vue'
	export default {
		data() {
			return {
				adminData : '',
				filename: '',
				fileData: [],
				fileValue: '',
				fileUrl : ''
			}
		},
		components: {
			card
		},
		
		mounted() {
			this.$refs.select_frame.ondragleave = (e) => {
				e.preventDefault() // 阻止离开时的浏览器默认行为
			}
			this.$refs.select_frame.ondrop = (e) => {
				e.preventDefault() // 阻止拖放后的浏览器默认行为
				const data = e.dataTransfer.files[0] // 获取文件对象
				if (data.length < 1) {
					return // 检测是否有文件拖拽到页面
				}
				console.log(data)
				// this.upload(data)//上传文件的方法

				// 上传
				this.upDataFile(data)

			}
			this.$refs.select_frame.ondragenter = (e) => {
				e.preventDefault() // 阻止拖入时的浏览器默认行为
				this.$refs.select_frame.border = '2px dashed red'
			}
			this.$refs.select_frame.ondragover = (e) => {
				e.preventDefault() // 阻止拖来拖去的浏览器默认行为
			}
		},
		methods: {
			upDataFile(data) {
				// console.log('上传函数', data)
				this.filename = data.name
				this.makeBlob(data)
				// s
			},
			
			// file转换base上传
makeBlob(file) {
	let reader = new FileReader();
	reader.readAsDataURL(file)
	console.log(reader)
	reader.onload = () => {
		uniCloud.uploadFile({
			filePath: reader.result,
			cloudPath: this.filename,
			success: (res) => {
				// console.log('成功', res)
				

				console.log(res.fileID)
				
			},
			fail: (err) => {
				// console.log('失败', err)
				uni.showToast({
					title: "上传失败,请重试!",
					icon: 'error'
				})
			},
			complete() {}
		});
	}
}
		}
	}
</script>

<style>
	.up_div {
		width: 60%;
		height: 300px;
		border-radius: 8px;
		border: 3px solid #b1b0af;
		margin: 50px auto 100px auto;
	}

	.up_div.hover {
		background-color: #007AFF;
		border: 3px solid #6ab2ff;
	}

	.file_all {
		width: 70%;
		margin: 0 auto 0 auto;
		display: flex;
		flex-wrap: wrap;
		align-items: center;
		justify-content: center;
	}
</style>

作者 译文

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注