当前位置: 首页 > news >正文

响应式网站模版建站自己建网页

响应式网站模版建站,自己建网页,地方网站域名,网络建设标准Vue的APP实现下载文件功能,并将文件保存到手机中 文字说明后台核心代码前台核心代码运行截图项目链接 文字说明 本文介绍Vue实现的APP,将文件下载并保存到手机中,为系统提供导出功能;同时支持导入,即选择本地的文件后&…

Vue的APP实现下载文件功能,并将文件保存到手机中

    • 文字说明
    • 后台核心代码
    • 前台核心代码
    • 运行截图
    • 项目链接

文字说明

本文介绍Vue实现的APP,将文件下载并保存到手机中,为系统提供导出功能;同时支持导入,即选择本地的文件后,获取文件内容,并将其上传到服务器中,也可选择对上传的文件内容进行解析,为系统提供导入功能

附带讲解视频,主要实验Vue的5+App的文件上传和下载功能

后台核心代码

后端控制器代码(上传接口)

package com.boot.controller;import com.boot.entity.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;import java.io.InputStream;/*** @author bbyh* @date 2024/6/4 22:58*/
@RestController
@Slf4j
@CrossOrigin(origins = "*", maxAge = 3600)
public class UploadController {@PostMapping("/upload")public Result upload(@RequestBody MultipartFile file) {try {InputStream inputStream = file.getInputStream();byte[] buf = new byte[inputStream.available()];int read = inputStream.read(buf);String fileContent = new String(buf, 0, read);log.info("文件名称:{},文件内容:{}", file.getOriginalFilename(), fileContent);return Result.success("文件上传成功", fileContent);} catch (Exception e) {log.error(e.getMessage(), e);return Result.error("文件上传接口接口服务出错", null);}}
}

下载接口

package com.boot.controller;import com.boot.entity.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.net.URLEncoder;
import java.nio.file.Files;
import java.nio.file.Paths;/*** @author bbyh* @date 2024/6/4 22:45*/
@RestController
@Slf4j
@CrossOrigin(origins = "*", maxAge = 3600)
public class DownloadController {@Value("${file.path}")private String filePath;@GetMapping("/download/{fileName}")public void download(@PathVariable String fileName, HttpServletResponse response) {try {response.setContentType("application/octet-stream");response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));try (InputStream inputStream = Files.newInputStream(Paths.get(filePath + fileName))) {byte[] buf = new byte[inputStream.available()];int read = inputStream.read(buf);response.getOutputStream().write(buf, 0, read);}} catch (Exception e) {log.error(e.getMessage(), e);response.reset();Result.writeResult(response, "文件下载接口接口服务出错," + e.getMessage());}}
}

前台核心代码

页面主要代码

<template><div style="display: flex; justify-content: center; align-items: center; height: 100px; width: 100%"><el-button type="primary" @click="selectFile()">选择文件上传</el-button><el-button type="danger" @click="openDownloadDialog()">下载文件</el-button><input type="file" style="display: none" @change="uploadFile($event)" ref="uploadFileRef"></div><el-dialog title="文件下载" width="60%" v-model="data.dialog"><el-input v-model="data.fileName" placeholder="请输入下载文件名"/><template #footer><span class="dialog-footer"><el-button @click="data.dialog = false">取消</el-button><el-button type="primary" @click="downloadFile">确认下载</el-button></span></template></el-dialog>
</template><script setup>
import {downloadFileToLocal, message, postRequest} from "./util";
import {reactive, ref} from "vue";function uploadFile(event) {if (event.target.files.length === 0) {message("warning", "本次未选择文件");return;}const formData = new FormData();const file = event.target.files[0];formData.append("file", file, file.name);postRequest("/upload", formData).then((res) => {if (res.data.code === 200) {message("success", res.data.data);} else if (res.data.code === 500) {message("error", res.data.msg);}});
}const uploadFileRef = ref();async function selectFile() {uploadFileRef.value.click();
}const data = reactive({fileName: undefined,dialog: false,
});function openDownloadDialog() {data.fileName = undefined;data.dialog = true;
}function downloadFile() {downloadFileToLocal("/download/" + data.fileName, data.fileName);
}
</script><style>
* {padding: 0;margin: 0;box-sizing: border-box;
}
</style>

工具类代码

import axios from "axios";
import {ElMessage} from "element-plus";const baseUrl = "http://127.0.0.1:5000";export const downloadFileToLocal = (href, filename) => {const eleLink = document.createElement('a');eleLink.download = filename;eleLink.style.display = 'none';eleLink.href = baseUrl + href;document.body.appendChild(eleLink);eleLink.click();document.body.removeChild(eleLink);
}export function message(type, msg) {ElMessage({message: msg,type: type,center: true,showClose: true,})
}export const postRequest = (url, data) => {return axios({method: 'post',url: baseUrl + url,data: data,})
}

运行截图

页面运行效果
在这里插入图片描述

项目链接

VueApp上传下载文件

http://www.hyszgw.com/news/570.html

相关文章:

  • 响应式手机网站建设昆明网络推广优化
  • 深圳网址网站建设公司湖南seo技术培训
  • 网站页面怎么做的好看网站seo外包
  • 网站设计制作开发公司网络广告策划书
  • 招生网站制作淘宝关键词热度查询工具
  • 国外做多媒体展览的网站杭州百度推广开户
  • 武汉最好的网站建设前十移动慧生活app下载
  • 做58同城网站花了多少钱推广的十种方式
  • 建一个做笔记的网站搜索引擎推广的方法有哪些
  • 深圳市网站建设科技公司百度网盘app下载安装电脑版
  • 接单做公司网站站群搜索引擎优化的概念
  • 营销一型网站建设公司chrome 谷歌浏览器
  • 网站首页框架图网络营销有哪些功能
  • 网站广告杭州关键词优化平台
  • 网站域名供应商有哪些网站可以免费发布广告
  • 直播软件app开发制作优化网站排名如何
  • 做商务网站服务上海关键词推广公司
  • 地方新闻网站建设方案鸿科经纬教网店运营推广
  • 杭州家装口碑比较好的公司优化大师兑换码
  • 网站建设 博客整站优化价格
  • 网站建设仟首先金手指14网络营销的特点有哪些特点
  • 海珠区建设和水务局网站东莞做网站seo
  • 东莞债务优化天津seo推广优化
  • 给宝宝做衣服网站好网店运营是做什么的
  • 泰安网站建设入门搜索引擎有哪些分类
  • 禅城做网站网络销售怎么干
  • 万网网站搬家成都网站seo服务
  • 北京宣传册高端设计公司锦州网站seo
  • 服务器怎样做网站呢成人教育培训机构排名
  • 百度网站怎么做友情链接搜索引擎优化方法有哪些