首页 > 其他分享 >vue实现文件上传

vue实现文件上传

时间:2023-11-09 10:14:33浏览次数:39  
标签:文件 vue const upload file 上传 我们

文件上传是web开发中一个常见的需求,Vue.js作为一款流行的前端框架,也提供了方便的方法来实现文件上传功能。在此,将详细讲解Vue.js如何实现文件上传。 首先,我们需要准备一个简单的html页面来接收上传文件。下面是示例代码:

<div id="app">
<input type="file" ref="fileInput" @change="uploadFile">
<button @click="submit"></button>
<div v-if="uploadProgress">上传进度: {{ uploadProgress }}%</div>
</div>
可以看到,我们在页面上放置了一个 `input` 标签和一个上传按钮。当我们选择文件后,会触发 `uploadFile` 方法来处理上传文件的逻辑。同时,我们还展示了上传进度。 接下来,我们需要在Vue实例中实现上传文件的逻辑。我们可以使用 `FormData` 对象来上传文件。下面是示例代码:
new Vue({
el: '#app',
data: {
uploadProgress: 0,
file: null
},
methods: {
uploadFile(event) {
this.file = event.target.files[0];
},
submit() {
const formData = new FormData();
formData.append('file', this.file);
axios.post('/api/upload', formData, {
onUploadProgress: progressEvent =>{
this.uploadProgress = Math.round((progressEvent.loaded / progressEvent.total) * 100);
}
}).then(response =>{
console.log(response);
});
}
}
})
在代码中,我们首先监听 `uploadFile` 方法,将选择的文件保存在 `file` 变量中。接下来,我们在 `submit` 方法中使用 `FormData` 对象来将文件上传到服务器。同时,我们使用 `axios` 库来发送POST请求,并监听上传进度来在页面上展示。 最后,我们需要在服务器端接收文件并进行处理。在此,我们假设我们使用了Node.js和Express框架来处理上传文件。下面是示例代码:
const express = require('express');
const app = express();
const multer = require('multer');
const upload = multer({ dest: 'uploads/' });
app.post('/api/upload', upload.single('file'), (req, res) =>{
console.log(req.file);
res.json({ message: '上传成功' });
});
app.listen(3000, () =>{
console.log('服务器已启动');
});

我们使用 `multer` 库来处理上传文件,设置上传目录为 `uploads/`。然后,我们在路由中监听POST请求,并使用 `upload.single` 方法来处理上传文件。最后,我们将上传成功的消息返回给前端页面。 这样一来,我们就完成了一个简单的文件上传功能的实现。在实际开发过程中,我们可以根据实际需求来进行优化和修改。

 

参考文章:http://blog.ncmem.com/wordpress/2023/11/09/vue%e5%ae%9e%e7%8e%b0%e6%96%87%e4%bb%b6%e4%b8%8a%e4%bc%a0/

欢迎入群一起讨论

 

 

标签:文件,vue,const,upload,file,上传,我们
From: https://www.cnblogs.com/songsu/p/17819067.html

相关文章

  • Linux文件管理知识:文本处理
    上篇文章详细介绍了Linux系统中查找文件的工具或者命令程序的相关操作内容介绍。那么,今天呢,这篇文章围绕Linux系统中文本处理来阐述。 众所周知,所有Linux操作系统都离不开一个核心原则,那就是它是由很多种文件组成的,那么,Linux系统的任何操作就离不开文本文件的处理。所以,它有很......
  • vue2实现动态侧边导航栏
    router文件下index.js 来源http://blog.itpub.net/69978258/viewspace-2909200///index.tsimportVuefrom'vue';importVueRouterfrom'vue-router';importLoginfrom'@/views/login/index.vue';importLayoutfrom'@/layout/ind......
  • 多文件并行上传方案设计
    多文件并行上传方案设计https://mp.weixin.qq.com/s/Zb-PBejtSBLaBN0LEPrjVg多文件并行上传方案设计原创 刘壮 搜狐技术产品 2023-11-0907:30 发表于北京  本文字数:2360字预计阅读时间:15分钟01背景抖音、快手等短视频 APP 都有本地编辑视频并上传的功能,这里......
  • vue 项目使用element ui 中tree组件 check-strictly 用法
    属性check-strictly:   在显示复选框的情况下,是否严格遵循父子互相关联的做法,默c认为false。   默认false,父子关联。      点击父节点,其下子节点全部统一跟随父节点变化,点击子节点,子节点部分勾选时,父节点处于半选状态。   设置为true,严格遵循......
  • 209-logback-spring.xml,指定日志输出到指定文件
    logback-spring.xml,指定日志输出到指定文件<configuration><!--定义日志输出路径--><propertyname="LOG_HOME"value="/path/to/log/directory"/><!--定义日志格式--><propertyname="LOG_PATTERN"value=......
  • vue监视属性watch简单使用
    vue监视属性watch的作用是可以监视data和computed中属性发生了变化,并且记录了属性的新值和旧值监视属性的位置监视属性watch位置是和data属性computed属性methods属性平级<script>exportdefault{data(){//datareturn{}},computed:{//计算属性},......
  • Linux 下最主流的文件系统格式——ext
    硬盘分成相同大小的单元,我们称为块(Block)。一块的大小是扇区大小的整数倍,默认是4K。在格式化的时候,这个值是可以设定的。一大块硬盘被分成了一个个小的块,用来存放文件的数据部分。这样一来,如果我们像存放一个文件,就不用给他分配一块连续的空间了。我们可以分散成一个个小块进行存放......
  • 读yaml文件 发送post请求
    1.yamllogindata:name:'ct0356'psw:'111111'2.读取yaml文件#读取yaml文件并获得字典类的返回importyamldefget_yaml(yaml_path):withopen(yaml_path,encoding='utf-8')asfo:yaml_data=yaml.safe_load(fo.read())......
  • vue-test4 -----插槽
    <template><!--<Mainclass="cccc"/><component-a/>--><slot-demo><template#header="slotProps"><p>插槽标题-{{slotProps.msg}}</p></template><template......
  • vue-test4 -------组件之间的数据传递
    <template><h3>CompA</h3><component-b:onfun="dateFun"></component-b><p>{{msg}}</p></template><script>importComponentBfrom"@/components/ComponentB.vue";exportdefault{......