前后端分离,浏览器上传下载文件

服务器文件浏览器下载:vue请求:downloadService(){  this.$confirm(‘确认要下载吗?‘, ‘提示‘, {    confirmButtonText: ‘确认‘,    cancelButtonText: ‘取消‘,    type: ‘warning‘  }).then(() => {    window.open(encodeURI( restoreService.geturl()+      ‘/asd/dasd?dsad))    window.close()  }).catch(() => {    this.$message({      type: ‘info‘,      message: ‘已取消‘    });  })

},

//后端请求:

public ResponseEntity<byte[]> simpleExport() throws BackupsException {

try {

String filename = path+ name;
FileObject fileObject = new FileObject();
fileObject = buildFileObject(fileObject, filename, name,contentsProj);
return download(fileObject);

} catch (Exception e) {
e.printStackTrace();
msg = "Error:服务备份失败";
msgError = msg;
}

}

public static FileObject buildFileObject(FileObject fileObject, String fileName, String exportFileName,byte[] data) {
FileInputStream is = null;
FileOutputStream out = null;
try {
File file = new File(fileName);
if (file.exists()) {
file.delete();
}
File fileParent = file.getParentFile();
if(!fileParent.exists()){
fileParent.mkdirs();
}
out = new FileOutputStream(file);
out.write(data, 0, data.length);
is = new FileInputStream(new File(fileName));
fileObject.setStream(is);

} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
finally{
if(out != null)
try {
out.close();
} catch (IOException e) {
}
}
fileObject.setId("2");
fileObject.setName(exportFileName);
fileObject.setSize(10000000);
fileObject.setType(".jar");
return fileObject;
}

public static ResponseEntity<byte[]> download(FileObject fo) throws UnsupportedEncodingException, IOException {
return download(fo.getName(), fo.getStream());
}

public static ResponseEntity<byte[]> download(String name, InputStream fis) throws UnsupportedEncodingException, IOException {
HttpHeaders headers = new HttpHeaders();
// String Agent = WebUtils.getRequest().getHeader("User-Agent");
/*if (null != Agent) {
Agent = Agent.toLowerCase();
if (Agent.indexOf("Mozilla") != -1) {
name = new String(name.getBytes(),"iso8859-1");
} else {
name = java.net.URLEncoder.encode(name,"UTF-8");
}
}*/
name = new String(name.replaceAll(" ", "").getBytes("gb2312"),"ISO_8859_1");
headers.setContentDispositionFormData("attachment", name);
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
headers.set("X-fileName", name);
byte[] bytes = input2byte(fis);
return new ResponseEntity<byte[]>(bytes, headers, HttpStatus.OK);
}

public static final byte[] input2byte(InputStream inStream)
throws IOException {
ByteArrayOutputStream swapStream = new ByteArrayOutputStream();
byte[] buff = new byte[100];
int rc = 0;
while ((rc = inStream.read(buff, 0, 100)) > 0) {
swapStream.write(buff, 0, rc);
}
byte[] in2b = swapStream.toByteArray();
// swapStream.close();
return in2b;
}

浏览器上传文件到服务器:

vue请求:

uploadFile(params) {  this.loading = true  const _file = params.file;  // const isLt2M = _file.size / 1024 / 1024 < 2;  // 通过 FormData 对象上传文件  var formData = new FormData();  formData.append("file", _file);  // if (!isLt2M) {  //   this.$message.error("请上传2M以下的.xlsx文件");  //   return false;  // }  this.$axios.post(restoreService.geturl() +‘/asd/sdf?we‘,formData,{ headers : { ‘Content-type‘:‘multipart/form-data‘}}).then(res => {    if (res.data.status === ‘200‘) {                this.$message({                  type: ‘success‘,                  message: res.data.message,                })              } else {                this.$message({                  type: ‘warning‘,                  message: res.data.message                })              }    this.$refs.upload.clearFiles();    this.loading = false            })      },

//后端请求:

@RequestMapping(value = "/Import", method = RequestMethod.POST)
public BaseResult<BackUpDto> simpleImport(@RequestParam(value = "file") MultipartFile file) throws Exception {
return logBackupRestoreService.simpleImport(file.getInputStream());
}

public BaseResult<BackUpDto> simpleImport(InputStream inputStream) throws BackupsException {
String path = System.getProperty("user.dir");
String fileGuid = UUID.randomUUID().toString();
File file = new File(path + "\\" + fileGuid + ".tmp");
byte[] bytes = null;
try {
bytes = inputStreamToFile(inputStream, file);
} catch (Exception e) {

}

}

public static byte[] inputStreamToFile(InputStream ins, File file) throws Exception{
ByteArrayOutputStream ous = null;
// OutputStream os = null;
try {
// os = new FileOutputStream(file);
ous = new ByteArrayOutputStream();
int bytesRead = 0;
byte[] buffer = new byte[8192];
while ((bytesRead = ins.read(buffer, 0, 8192)) != -1) {
ous.write(buffer, 0, bytesRead);
}
} catch (Exception e) {
// logger.error(e.getMessage(), e);
throw new Exception(e);
}finally{
if(ous != null){
ous.close();
}
if(ins != null){
ins.close();
}

}
return ous.toByteArray();
}



原文地址:https://www.cnblogs.com/js1314/p/10789021.html

时间: 2024-11-11 03:56:54

前后端分离,浏览器上传下载文件的相关文章

利用 secureCRT 直接上传下载文件 (sz,rz)

在window下向linux传送文件的方法. 首先在window中安装SecureCRT,然后在快速连接中建立一个到linux的连接,当然,你要先知道你的系统的ip,在终端中键入ifconfig可以查看到. 然后连接即可登陆到linux的终端下 要从linux传文件到window的话,这需要cd到你要传的文件的目录,然后用命令:sz 文件名即可上传.文件放在securesrt/download下面 要从window传送文件到linux,则在终端中输入rz,然后会出来一个对话框让你选择文件传送的.

SFTP上传下载文件

secureCRT SFTP上传/下载文件 远程登陆IP secureCRT会话中点击SFTP 3.cd  /home/dowload       linux平台切换到/home/dowload目录 4.cd d:\   windows平台切换到d盘 5.put 文件名           上传 /home/dowload目录下 6.get 文件名   下载文件到windows平台 d盘

Linux上传下载文件

2种方式:xftp(工具).lrzsz xftp:协议--SFTP.端口号--22 lrzsz: rz,sz是Linux/Unix同Windows进行ZModem文件传输的命令行工具. 优点就是不用再开一个sftp工具登录上去上传下载文件. sz(下载):将选定的文件发送(send)到本地机器 rz(上传):运行该命令会弹出一个文件选择窗口,从本地选择文件上传到Linux服务器 安装命令:yum install lrzsz 从服务端发送文件到客户端:sz filename 从客户端上传文件到服务

向云服务器上传下载文件方法汇总(转)

转载于:https://yq.aliyun.com/articles/64700 摘要: 一.向Windows服务器上传下载文件方式 方法有很多种,此处介绍远程桌面的本地资源共享方法. 1.运行mstsc,连接远程桌面的时候,点"选项>>" 2."本地资源"-->详细信息. 3."磁盘驱动器"前面打钩. 一.向Windows服务器上传下载文件方式 方法有很多种,此处介绍远程桌面的本地资源共享方法. 1.运行mstsc,连接远程桌

向linux服务器上传下载文件方式收集

向linux服务器上传下载文件方式收集 1. scp [优点]简单方便,安全可靠:支持限速参数[缺点]不支持排除目录[用法] scp就是secure copy,是用来进行远程文件拷贝的.数据传输使用 ssh,并且和ssh 使用相同的认证方式,提供相同的安全保证 . 命令格式: scp [参数] <源地址(用户名@IP地址或主机名)>:<文件路径> <目的地址(用户名 @IP 地址或主机名)>:<文件路径> 举例: scp /home/work/source.

rz和sz上传下载文件工具lrzsz

######################### rz和sz上传下载文件工具lrzsz ############################################################ 1 rpm -qa |grep lrzsz 如果没有用RPM安装即可: 2 rpm -ivh lrzsz-0.12.20-27.1.el6.x86_64.rpm (去光盘里找) 或者 yum install -y lrzsz 即可. ###########################

WebService中实现上传下载文件

不多说,直接看代码: /*上传文件的WebService*/ using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Web; using System.Web.Services; using System.IO; /// <summ

python 实现ssh远程执行命令 上传下载文件

使用密码远程执行命令 [[email protected] script]# cat daramiko_ssh.py  #!/usr/bin/env python #_*_coding:utf-8 _*_ __author__ = 'gaogd' import paramiko import sys,os host = sys.argv[1] user = 'root' password = 'ddfasdsasda2015' cmd = sys.argv[2] s = paramiko.SSH

linux下lrzsz安装过程,SecureCRT上传下载文件工具

linux下lrzsz安装过程,SecureCRT上传下载文件工具 1.从下面的地址下载 lrzsz-1.12.20.tar.gz http://down1.chinaunix.net/distfiles/lrzsz-0.12.20.tar.gz 2.查看里面的INSTALL文档了解安装参数说明和细节 3.解压文件 tar zxvf lrzsz-1.12.20.tar.gz 4.进入目录 cd lrzsz-1.12.20 5../configure --prefix=/usr/local/lrz