首页 > 其他分享 >Vue2 结合 IPFS (星际文件系统)实现文件上传

Vue2 结合 IPFS (星际文件系统)实现文件上传

时间:2023-03-21 15:33:11浏览次数:47  
标签:el IPFS vue 文件系统 fileList result Vue2 ipfs import


1、预先安装配置好IPFS

2、运行 ipfs help (如出现下图安装ipfs完成)

Vue2 结合 IPFS (星际文件系统)实现文件上传_App

 3、运行 ipfs daemon (出现下图表示成功)

Vue2 结合 IPFS (星际文件系统)实现文件上传_Vue_02

 

4、利用vue创建一个项目

 vue create ipfs

Vue2 结合 IPFS (星际文件系统)实现文件上传_App_03

 

5、出现下列文件

Vue2 结合 IPFS (星际文件系统)实现文件上传_App_04

6、在如下目录中

Vue2 结合 IPFS (星际文件系统)实现文件上传_Vue_05

编写  IPFS.vue

<template>
<div class="home">
<el-container>
<el-form label-width="80px">
<el-form-item label="产品图片">
<div class="img-wrapper">
<img class="img-panel" :src="photoURL1" />
<div class="txt-title">{{ipfsHash}}</div>
</div>
<el-upload class="img-upload" action="tmp" :limit="1" :on-change="handleChange"
:on-exceed="handleExceed" :auto-upload="false">
<el-button slot="trigger" size="small" type="primary">选取文件</el-button>
<el-button style="margin-left: 10px;" size="small" type="success" @click="uploadImage">
上传到服务器
</el-button>
</el-upload>
<el-input v-model="photoURL1"></el-input>
</el-form-item>
</el-form>
</el-container>
</div>
</template>

<script>
import { create } from 'ipfs-http-client'
import Buffer from "vue-buffer";

export default {
data() {
const ipfs = create('http://192.168.1.161:5001/')
return {
photoURL1: '',
fileList: [],
ipfs: ipfs,
buffer: null,
ipfsHash: ''
};
},
mounted() {

},
methods: {
handleChange(file, fileList) {
this.fileList = fileList;
},
handleExceed(files, fileList) {
this.$message.warning(`当前限制选择 1 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`);
},
uploadImage() {
if (this.fileList.length < 1) {
this.$message.warning('请选择需要上传的文件')
} else {
const reader = new window.FileReader()
console.log(this.fileList[0].raw)
reader.readAsArrayBuffer(this.fileList[0].raw)
reader.onloadend = () => {
this.buffer = Buffer(reader.result)
this.uploadToIPFS()
}
}
},
async uploadToIPFS() {
let result = await this.ipfs.add(this.buffer)
console.log(result)
this.photoURL1 = `https://ipfs.io/ipfs/${result.path}`
this.ipfsHash = `${result.path}`;
},
},
};
</script>

<style>
body>.el-container {
margin-bottom: 40px;
}

.el-container:nth-child(5) .el-aside,
.el-container:nth-child(6) .el-aside {
line-height: 260px;
}

.el-container:nth-child(7) .el-aside {
line-height: 320px;
}
</style>

7、修改 App.vue 代码如下

<template>
<div id="app">
<IPFS/>
</div>
</template>

<script>
import IPFS from './components/IPFS.vue'

export default {
name: 'App',
components: {
IPFS
}
}
</script>

<style>
#app {
font-family: Avenir, Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
margin-top: 60px;
}
</style>

8、修改 main.js 如下

import Vue from 'vue'
import App from './App.vue'
import ElementUI from "element-ui";
import "element-ui/lib/theme-chalk/index.css";

Vue.use(ElementUI);

Vue.config.productionTip = false

new Vue({
render: h => h(App),
}).$mount('#app')
~

9、由于用到了element ui,所以需要下载依赖

npm install element-ui --save

10、下载依赖

npm install --save vue-buffer

11、在node_modules所在目录可以启动程序

npm run serve

页面如下:

Vue2 结合 IPFS (星际文件系统)实现文件上传_App_06

 

Vue2 结合 IPFS (星际文件系统)实现文件上传_ide_07

 

Vue2 结合 IPFS (星际文件系统)实现文件上传_ide_08

 

标签:el,IPFS,vue,文件系统,fileList,result,Vue2,ipfs,import
From: https://blog.51cto.com/u_15738297/6140249

相关文章

  • Vue——vue2错误处理收集【七】
    前言在initEvents中发现的有意思的东西,就是Vue针对Error的处理,说实话之前压根没在意过Vue是如何收集处理Error的;errorHandler:https://v2.cn.vuejs.org/v2/api#er......
  • vue2 - 好用的markdown开源编辑器
    mavonEditor:https://github.com/hinesboy/mavonEditor VueQuillEditor:https://www.kancloud.cn/liuwave/quill/1434140//main.js使用markdown插件importVueQuillEd......
  • vue3 v-model取代vue2 .sync(个人使用记录)
    例子:封装el-pagination组件<scriptlang="ts"setup>import{computed}from"vue";constemit=defineEmits<{(e:'update:pageSize',pageSize:number):void//p......
  • Linux 硬盘存储和文件系统介绍
    一:硬盘存储1、存储类型根据存储的可以将存储分为内存和外存两类。内存:又叫做主存储器,计算机中所有程序的运行都是在内存中进行。外存:又叫做辅助存储器,因为内存容量......
  • 文件系统理解
    一、inode是什么?理解inode,要从文件储存说起。文件储存在硬盘上,硬盘的最小存储单位叫做”扇区”(Sector)。每个扇区储存512字节(相当于0.5KB)。操作系统读取硬盘的时候,不会一......
  • Vue2 开发必备的 VSCode 插件
    10个vue2必备开发插件Vetur:Vue.js开发插件,提供了语法高亮、错误提示、自动补全等功能。Vue2Snippets:Vue.js2代码段,可以快速生成常用的Vue.js代码。ESLint:JavaScript......
  • vue2、等dom更新完之后再执行,获取dom元素 ref
    $nextTick作用:等Dom更新完以后再执行//等Dom更新完以后再执行this.$nextTick(()=>{varobj=newWxLogin({id:"weixin",......
  • Vue2入门之超详细教程四-数据绑定
    1、简介数据绑定分为单向数据绑定和双向数据绑定,上一章节中出现的v-bind就属于单向数据绑定。单向绑定(v-bind):数据只能从data流向页面双向绑定(v-model):数据不仅......
  • 使用vue2+element-ui+axios实现后台管理系统的增删改查
    以下仅作为自己个人学习使用前言:需要后端的接口已经在另外一篇博客写了,需要的小伙伴们可以去那边参考,下面是链接https://www.cnblogs.com/Amyel/p/17233060.html正片......
  • HDFS分布式文件系统
    目录1️⃣、HDFS的概述1.1、HDFS产出背景及定义1.2、HDFS优缺点1.3、HDFS组成架构1.4、HDFS文件块大小(面试重点)2️⃣、HDFS的Shell操作2.1、基本语法2.2、命令大全2.3、常用命......