[Vue]自定义上传文件至服务器的两种方式

一、环境描述

脚手架:GitHub - PanJiaChen/vue-admin-template: a vue2.0 minimal admin template

二、用原生input上传(以图片为例)

html部分:

      <h4>修改图片:</h4>
      <input
        id="fileInput"
        type="file"
        @change="handleFileUpload"
        accept="image/*"
      />

js methods部分:

    // 图片上传
    handleFileUpload(event) {
      const file = event.target.files[0]; // 上传单个图片
      const formData = new FormData();
      formData.append("file", file); // 名称、类型由后端接口决定
      
      // 下面是封装的上传函数,不同项目可能不同,可自行修改
      caseApi.uploadPicture(formData).then((res) => {
        this.$message({
          message: "上传成功",
          type: "success",
        });
        this.editModel.petPicture = res.data.fileURL;
      });
    },

三、用el-upload组件上传(以视频为例)

html部分:(参考Element - The world's most popular Vue UI framework

            <el-upload
              ref="uploadVideoForm"
              style="text-align: center"
              action=""
              drag
              :http-request="uploadVideo"
              accept="video/*"
              :file-list="fileList"
              :on-change="handleChange"
            >
              <i class="el-icon-upload"></i>
              <div class="el-upload__text">
                将文件拖到此处,或<em>点击上传</em>
              </div>
              <div class="el-upload__tip" slot="tip">
                只能上传视频文件,且不超过{{ uploadVideoConfig.maxSize }}M
              </div>
            </el-upload>

js methods部分:

    // 视频上传
    uploadVideo() {
      const file = this.videoFile;
      const formData = new FormData();
      formData.append("file", file); // 由后端接口决定

      // 下面上传文件,根据项目自行修改
      caseApi.uploadPicture(formData).then((res) => {
        this.$message({
          message: "上传成功",
          type: "success",
        });
        this.videoForm.videoLink = res.data.fileURL;
        this.clearFiles("uploadVideoForm");
      });
    },
    // 发生变化时处理
    handleChange(file) {
      const fileName = file.name; // 文件名字
      const fileType = fileName.substring(fileName.lastIndexOf(".") + 1); // 文件类型
      this.videoFile = file.raw;
    },
    // 清空列表方法
    clearFiles(ref) {
      this.$refs[ref].clearFiles();
    },

js data return()部分:

      fileList: [],
      videoFile: null,

      // 视频上传配置
      uploadVideoConfig: {
        type: null,
        uploadUrl: "api/case/uploadPicture", // 上传地址
        maxSize: 1024, // 上传大小限制
        name: "file", // 上传字段
      },

注意:

1. 简单来说就是用:http-request指定文件上传的函数,原有的action、:before-upload、:on-success等不起作用。但删去action可能有报错,所以还是写了action=""。

2. 本代码没有写文件类型和大小限制。注意accept中的格式只能用于显示,如果需要做文件限制请另写代码,在:http-request的函数中实现。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 使用SpringBoot和Vue实现上传视频和播放视频功能可以通过以下步骤进行操作。 1. 后端实现: 使用SpringBoot创建一个后端项目,配置相关依赖和数据库连接等。在后端项目中,可以使用第三方库或自定义接口来处理视频上传功能。可以使用Spring MVC的`MultipartFile`来接收视频文件,并将视频保存到服务器的指定目录中。同时,可以在数据库中存储视频的相关信息,如文件名、路径等。 此外,可以创建一个接口供前端调用来获取上传后的视频列表信息。该接口可以从数据库中读取视频信息,并返回给前端。 2. 前端实现: 使用Vue创建一个前端项目,配置相关依赖,并创建一个视频上传组件。在该组件中,可以使用`<input type="file">`标签来选择视频文件,并通过Vue的事件监听来获取用户选择的视频文件。 在上传视频的方法中,可以使用`axios`或其他库来发送视频文件到后端的上传接口。上传完成后,可以根据后端返回的信息进行提示或其他处理。 另外,可以创建一个视频播放组件,用于展示上传成功的视频列表。在该组件中,可以通过调用后端提供的获取视频列表的接口,获取视频的相关信息。然后,可以使用HTML5的`<video>`标签来播放视频,并根据需要进行进一步的自定义样式和功能开发。 3. 测试和部署: 完成上传视频和播放视频功能后,可以进行测试。使用Postman或其他方式测试后端的上传接口,确保视频可以正确上传并存储到服务器中。同时,也可以在前端页面中测试视频上传和播放功能,确认功能完整且正常工作。 最后,可以将后端项目打包成可执行的jar包,并部署到服务器上。将前端项目打包成静态文件,并放置到服务器的可访问位置。通过配置服务器的端口和域名等信息,使上传视频和播放视频的功能可以通过访问服务器的URL地址来使用。 ### 回答2: 要实现上传视频和播放视频功能,可以使用Spring Boot和Vue.js来完成。 首先,在Spring Boot中,可以使用Spring MVC框架来处理上传视频的请求。可以通过编写一个控制器类来处理上传视频的逻辑,使用`@RequestMapping`注解来映射上传视频的接口。在该接口中,可以使用`MultipartFile`类型的参数来接收上传的视频文件,并使用`transferTo()`方法将视频保存到指定的位置。 接下来,可以使用Vue.js来构建前端界面。可以使用`vue-router`来实现路由功能,创建多个组件来处理上传视频和播放视频的逻辑。在上传视频的组件中,可以使用`el-upload`组件来实现视频文件的选择和上传,通过请求Spring Boot的上传视频接口将视频文件传递给后端。在播放视频的组件中,可以使用`video`标签来实现视频播放功能,并将视频的URL设置为动态值。 在后端处理上传视频请求后,可以返回一个视频的URL给前端,用于在播放视频的组件中进行展示。可以将视频URL保存在数据库中,并在前端从数据库中获取视频URL进行展示。 总结起来,使用Spring Boot处理上传视频的请求,将视频文件保存到指定位置,同时将视频URL保存到数据库中。使用Vue.js构建前端界面,使用`el-upload`组件实现视频的选择和上传,使用`video`标签实现视频的播放功能,并从数据库中获取视频URL进行展示。通过这样的方式,就可以实现上传视频和播放视频的功能。 ### 回答3: 要实现上传视频和播放视频的功能,可以使用Spring Boot和Vue两种技术。 在后端,可以使用Spring Boot来搭建一个RESTful API服务。首先,需要定义一个接口用于处理视频上传的请求。可以使用Spring的MultipartFile类来接收视频文件,并将其存储在服务器的指定位置。可以使用Java的IO流来实现文件的读写,确保视频文件保存在服务器上。 在前端,可以使用Vue来构建用户界面。首先,需要创建一个上传视频的表单,以便用户选择要上传的视频文件。使用Vue的formData对象来将视频文件转换为二进制数据,并通过POST请求将其发送给后端接口。同时,还可以使用Vue的进度条组件来显示视频上传的进度。 在后端,接收到视频文件后,可以将其保存在指定路径下,并将文件路径存储在数据库中。这样,可以在后续的播放视频功能中使用该路径来访问视频文件。可以使用Spring Boot提供的静态资源处理功能来访问保存在服务器上的视频文件。 在前端,可以使用Vue的视频播放器组件来实现视频播放功能。可以通过后端返回的视频文件路径来加载视频,并在页面上展示视频播放器。可以使用Vue的事件处理机制,例如点击事件,来控制视频的播放、暂停、快进、后退等操作。 综上所述,通过结合Spring Boot和Vue,可以实现上传视频和播放视频的功能。通过后端的接口和前端的用户界面,用户可以方便地上传和播放视频。同时,还可以根据具体需求,进一步扩展视频管理功能,例如视频列表展示、视频分类等。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值