您的位置:

js使用二进制流下载pdf文件(js解析二进制文件流)

js使用二进制流下载pdf文件(js解析二进制文件流)

更新:

本文目录一览:

JS 怎么读取二进制文件

使用FileReader对象,web应用程序可以异步的读取存储在用户计算机上的文件(或者原始数据缓冲)内容,可以使用File对象或者Blob对象来指定所要处理的文件或数据.

readAsBinaryString()

读取指定的Blob对象或File对象中的内容. 当读取操作完成时,readyState属性的值会成为DONE,如果设置了onloadend事件处理程序,则调用之.同时,result属性中将包含所读取文件的原始二进制数据.

Vue中前端接收二进制文件流实现预览PDF

1、后台Controller代码

@GetMapping("/common/getPDFStream/{key}")

public void getPDFStream(@PathVariable String key,HttpServletRequest request,HttpServletResponse response) throws UnsupportedEncodingException {

FileStorage fileStorage = storageService.findByKey(key);

String type = fileStorage.getType();

MediaType mediaType = MediaType.parseMediaType(type);

Resource file = storageService.loadAsResource(key);

if (file == null) {

response.setStatus(-1);

}

try {

//文件所在的路径file.getURI().getPath()

File file1 = new File(file.getURI().getPath());

byte[] data = null;

FileInputStream input = new FileInputStream(file1);

data = new byte[input.available()];

input.read(data);

response.getOutputStream().write(data);

input.close();

} catch (Exception e) {

e.printStackTrace();

}

}

2、前台接收

封装axios, request.js

import axios from 'axios'

/**

* 封装axios异步请求的方法==================

*/

// 创建一个axios对象-----------

const request = axios.create({

baseURL:process.env.VUE_APP_BASE_API,//根据不同的环境,加载不同的常量值

timeout: 50000,//请求超时,50000毫秒

})

// 设置请求拦截器====================================

// 对拦截进行请求--------------------

request.interceptors.request.use(config = {

//请求拦截

config.data = {

...config.data,

userId: sessionStorage.getItem('userId')

}

return config;

}, error = {

//出现异常

return Promise.reject(error);//es6写法

});

// 设置响应拦截器==================================

// 对拦截进行响应--------------------

request.interceptors.response.use(response ={

if(!response.data||response.data==""){

return '{"flag":"failure","msg":"未知错误"}';

}

return response.data;

},error ={

return Promise.reject(error);

})

export default request //导出自定义创建的axios对象,供其他组件进行使用

3、定义方法 common.js

import request from '@/utils/request' //导入已经封装好的axios请求方式

export function getPDFStream(param) {

// 定义后端请求路径

let url = process.env.VUE_APP_BASE_API + '/common/getPDFStream/' + fileKey

return request.get(url, {

headers: { 'Content-Type': 'application/x-www-form-urlencoded' },

responseType: 'blob'

}).then(async (data) = {

console.log('getPDFStream data', data)

const isLogin = await blobValidate(data.data)

console.log('download isLogin', isLogin)

if (isLogin) {

const blob = new Blob([data.data], {type: 'application/pdf'})

return blob

} else {

const resText = await data.text()

const rspObj = JSON.parse(resText)

const errMsg = errorCode[rspObj.code] || rspObj.msg || errorCode['default']

Message.error(errMsg)

}

}).catch((r) = {

console.error(r)

Message.error('下载文件出现错误,请联系管理员!')

})

}

4、vue页面代码

①触发事件列表标签

{{scope.row.courseName}}

②预览展示弹窗

el-dialog p="" /el-dialog

width="900px"

title="预览"

:visible.sync="lookPdfFile"

:footer="null"

:forceRender="true"

@ok="lookPdfFile"

③ 需要导入方法、初始值、和自定义方法

// 在vue页面导入方法getPDFStream

import { getPDFStream } from "@/api/common";

// 在vue页面定义data

data () {

return {

lookPdfFile:false,//预览pdf

pdfUrl:'',// pdf路径

}

}

// 在vue页面methods定义方法handlePDF

methods: {

/** 课程预览 **/

async handlePDF(row) {

console.log('handleLook', row)

this.getPDFStream(row.fileKey).then(res = {

console.log('res::::', res)

// debugger

if (window.createObjectURL !== undefined) { // basic

this.pdfUrl = window.createObjectURL(res) + '#toolbar=0'

} else if (window.webkitURL !== undefined) { // webkit or chrome

try {

this.pdfUrl = window.webkitURL.createObjectURL(res) + '#toolbar=0'

} catch (error) {

}

} else if (window.URL !== undefined) { // mozilla(firefox)

try {

this.pdfUrl = window.URL.createObjectURL(res) + '#toolbar=0'

} catch (error) {

}

}

this.$nextTick(() = {

console.log('this.pdfUrl', this.pdfUrl)

this.lookPdfFile = true

})

})

}

}

java 数据库中2进制流image转成PDF

FileUtils.writeByteArrayToFile(new File("xx.pdf"),p.getBytes());

一般存到数据库的二进制流都是经过加密的,常用的是base64

byte[]bytes = new BASE64Decoder().decodeBuffer(p);

FileUtils.writeByteArrayToFile(new File("xx.pdf"),bytes);

js实现各种文件下载,文件类型包括word、excel、exe、pdf、txt、jpg等等

http jq ajax请求后台 返回一个文件 直接就可以下载了 下载地址为浏览器设置的默认下载地址

使用js下载保存pdf文件

pdf.js

是基于开放的

html5

javascript

技术实现的开源产品。简单说就是一个

pdf

解析器。运用html5javascript(即pdf.js仅使用安全的web语言,不包含任何攻击者可以用的本地代码块)的pdf阅读器pdf.js,直接在标准的html页面上载入和渲染pdf...

js使用二进制流下载pdf文件(js解析二进制文件流)

本文目录一览: 1、JS 怎么读取二进制文件 2、Vue中前端接收二进制文件流实现预览PDF 3、java 数据库中2进制流image转成PDF 4、js实现各种文件下载,文件类型包括word、exc

2023-12-08
js解析二进制流文件跨域,js二进制流转文件

2022-11-24
js创建下载文件,JS下载文件

2022-11-23
JS下载文件流详解

2023-05-18
JS预览PDF完全解析

2023-05-17
js步骤流程代码下载(js教程文档下载)

本文目录一览: 1、请问如何将网上下载了的js的文件插入到我的网页中呢。 请别只发代码,需要具体操作流程。谢谢。 2、怎么把一个网页的js代码下载 下来啊 3、如何用js实现点击按钮下载文件 请问如何

2023-12-08
文件下载java,文件下载javaee

2023-01-05
js文件下载慢(网页下载文件特别慢)

本文目录一览: 1、网站中有三个js文件大小超过100KB,超级影响加载速度,想问怎样优化? 2、用的是七牛云,当出现多个js加载慢的问题要怎么解决? 3、js加载速度慢怎么解决? 网站中有三个js文

2023-12-08
java二进制流,JAVA二进制流log输出

2022-11-28
js跨域i下载文件,前端下载文件跨域

2022-11-23
文件下载java,文件下载java代码

2023-01-09
js处理文件流时文件内容乱码(js filereader读取

本文目录一览: 1、js中文乱码怎么解决? 2、如何解决在浏览器上查看js文件时中文的乱码问题 3、js文件中无故报错,不知道什么原因,还会有部分的乱码错误。 4、为什么.js文件引入会出现乱码? 5

2023-12-08
js解压zip文件,js zip解压

2022-11-23
前端下载文件流

2023-05-19
公共js文件下载,js 下载本地文件

本文目录一览: 1、大家好,我很喜欢网页设计,我有个问题,请问如何从网页上提取JS文件,谢谢啦 2、我想在浏览器客户端 的js中 响应文件下载事件 怎么实现呢 3、如何写个公共JS文件供其他html使

2023-12-08
js实现文件下载显示进度条(js 文件上传进度)

本文目录一览: 1、js高手处理网站每页加载时显示进度条 2、文件下载如何使用进度条? 3、关于js或jquery进度条实现? 4、JS程序 图片(即进度条)加载 5、JS做的进度条,如何做的? 6、

2023-12-08
js文件下载进度条实现(前端文件下载进度条)

本文目录一览: 1、关于js或jquery进度条实现? 2、JS做的进度条,如何做的? 3、js怎么实现进度条! 4、js高手处理网站每页加载时显示进度条 5、文件下载如何使用进度条? 6、JS程序

2023-12-08
java读二进制文件中结构体,java读取二进制文件内容

2022-11-23
JS文件下载指南

2023-05-16
js流程控制源码,js流程控制源码有哪些

本文目录一览: 1、javascript中有哪些流程控制语句 2、nodejs的流程控制的方式有几种 3、js的简介 4、js代码的JS代码在优化中: 5、js有什么流程语句控制必填项不填写也可以提交

2023-12-08