//判断是Json还是文件流
try {
String responseMsg = EntityUtils.toString(response.getEntity(), "utf-8");
JSONObject json = JSONObject.parseObject(responseMsg);
String code = json.get("code").toString();
String error = json.get("error").toString();
//能执行到这里说明是Json 不是文件流,即获取文件流失败(应当直接返回了)
return ResultUtil.fail(error, code);
} catch (Exception e) {
//捕获到异常 说明不是Json 是文件流(什么也不做 直接放行即可)
e.printStackTrace();
System.out.println("----Json解析抛异常,说明不是Json 是文件流,即获取文件流成功");
//能执行到这里 说明不是Json 是文件流,即获取文件流成功
InputStream is = response.getEntity().getContent();
闲来无事,琢磨着写点东西。貌似页面下拉加载数据,瀑布
流
的效果很火,各个网站都能见到各式各样的展示效果,原理大同小异。于是乎,决定自己写一写这个效果,希望能给比我还菜的菜鸟们一点参考价值。
在开始之前,先把实现的基本原理说一下。当夜幕下拉到底部的时候,
js
可以
判断
滚动条的位置,到达底部触发
js
方法,执行jquery的ajax方法,向后台一般处理程序夜幕ashx
文件
请求数据源,得到
json
格式的数据源。然后,遍历
json
数据源,拼接一个li标签,再填充到页面上去。
首先,我们来做个简单的html页面。页面里需要引入jquery库,然后用jquery的ajax方法去请求后台程序,也就是一般处理程序页
前端使用arraybuffer导出文本
流
,成功与失败格式不一样,当成功时是文本
流
,失败时是
json
const tempBlob = new Blob([ res.data ], { type: 'application/
json
' })
// 通过 FileReader 读取这个 blob
const reader = new FileReader()
reader.onload = e => {
const res1 = e.target.result
// 此处对fileRea
poi解析excel功能参数说明
此项目是基于springMVC实现的,基本
流
程为从前台
js
p页面使用Ajax
文件
上传导入excel
文件
(.xls(97-03)/.xlsx(07以后)),传到后台controller调用相应工具类解析后返回指定参数做后续处理.
1. POIUtil.
java
工具类
解析通过MutilpartFile导入的Excel并解析里面数据,先
判断
文件
的类型(excel处理有两种此处为两种通用)是.xls/.xlsx,通过workbook.getNumberOfSheets()获取工作簿数量,遍历工作簿,sheet.getLastRowNum()获取最大行数,将每行数据放入List list = new Array List(),并根据excel数据类型将器转换为字符串、数字、Boolean、公式、空值类型防止出现错误,最后返回一个list.
2. ExcelUtil.
java
工具类
解析通过MutilpartFile导入的Excel并解析里面数据,先
判断
文件
的类型(excel处理有两种此处为两种通用)是.xls/.xlsx,采用Apache的POI的API来操作Excel,读取内容后保存到List中,再将List转
Json
(使用Linked,增删快,与Excel表顺序保持一致),Sheet表1————>List1<Map>
步骤1:根据Excel版本类型创建对于的Workbook以及CellSytle
步骤2:遍历每一个表中的每一行的每一列,这里做了些小改动,因为后续可能解析过后可能会保存入数据库,这里为第一行数据添加一个自定义表头
String[] p = new String[]{"name","age","sex","tel","address","e-mail","phone"};
遍历的列数量以p的length为准
步骤3:一个sheet表就是一个
Json
,多表就多
Json
,对应一个 List
一个sheet表的一行数据就是一个 Map
一行中的一列,就把当前列头为key,列值为value存到该列的Map中
Map 一个线性Hash Map,以Excel的sheet表顺序,并以sheet表明作为key,sheet表转换
Json
后的字符串作为value
最后返回一个LinkedHashMap
3. ExcelTo
Json
Poi.
java
工具类
这个与上面工具类类似,不过这个是解析本地excel
文件
不是使用的
流
,使用迭代遍历sheet工作簿与每行每列的值,将所有类型作为String类型处理返回一个
json
对象输出至控制台
typeof用来
判断
基本数据类型,返回值是数据类型
typeof只能用来
判断
基本数据类型,对于引用数据类型来说只会返回一个Object(function会返回function)。
在
Java
Script 中二进
文件
服务器
启动ipfs-client,相当于启动了一个ipfs节点,节点间
文件
自动切割分发,多个区域内,可通过ipfs-client实现
文件
互通,并保证
文件
不可篡改, 如果启用了ipfs-search-es模块,可针对
文件
类型、名称、大小等信息,进行
文件
搜索查询
可上传
JSON
文件
到ipfs-client,生成唯一CID,再把生成CID带到请求header上,第三方系统,可通过CID来
判断
数据是否被修改
CDN服务
多区域启用ipfs-client,各子区域上传的
文件
,其它区域可互相访问,节点越多速度越快,可快速搭建CDN服务
分布式webscoket服务
还在为webscoket链接数限制而烦恼吗,启用ipfs-client就相当启动了一个分布式的webscoket服务,可水平无限扩容webscoket连接数, 并且不需要特殊处理,就能广播、或定向发送消息到客户端
边缘实时计算
各个分组和消费端多有node节点ID,通过ipfs能互通
每个节点保证
console.log(typeof 'a');//string
console.log(typeof 2);//number
console.log(typeof true);//boolean
console.log(typeof Symbol());//Symbol
console.log(typeof
exportExcel(data, name) {
let link = document.createElement('a')
let blob = new Blob([data], { type: 'application/vnd.ms-excel' })
link.style.display = 'none'
link.href = URL.createObjectURL(blob)
link.download = `${n
这几天要做一个数据采集的测试网页,然后碰到一个问题。
在调用采集接口的时候返回的图片数据是以数据
流
的方式返回的,然后我就各种查询怎么把数据
流
转化成本地
文件
或者是直接转化成可以让img.src直接赋值的对象,尝试了很多也问了下项目经理,都没有得到很好的解决办法,最好问到一个大神,他在做微信的时候做过这样的问题解决办法很简单:
在
流
前面加上 data:image/jpeg;base64,
在 Node.
js
中,可以通过子进程的 `stdout` 事件来监听子进程的输出。当子进程输出数据时,`stdout` 事件会触发,并且将输出的数据作为回调函数的参数传递给主进程。
具体来说,在子进程中,可以使用 `process.send()` 方法将
文件
流
发送给父进程。在父进程中,可以使用 `child_process.spawn()` 方法创建子进程,并监听子进程的 `stdout` 事件。当子进程输出数据时,父进程可以通过 `stream.write()` 方法将数据写入到
文件
中。
下面是一个示例代码,演示了如何在子进程中发送
文件
流
,并在父进程中监听
文件
流
是否发送完成:
子进程代码:
```
java
script
const fs = require('fs');
const { PassThrough } = require('stream');
// 创建一个可写入的
流
const stream = new PassThrough();
// 将
文件
流
写入到可写入的
流
中
fs.createReadStream('file.txt').pipe(stream);
// 将可写入的
流
发送给父进程
process.send({ type: 'fileStream', stream }, () => {
console.log('file stream sent');
父进程代码:
```
java
script
const { spawn } = require('child_process');
const fs = require('fs');
// 创建子进程
const child = spawn('node', ['child.
js
']);
// 监听子进程的 stdout 事件
child.stdout.on('data', (data) => {
const message =
JSON
.parse(data.toString());
//
判断
是否是
文件
流
if (message.type === 'fileStream') {
const { stream } = message;
// 创建一个可写入的
文件
流
const fileStream = fs.createWriteStream('output.txt');
// 将
文件
流
写入到
文件
中
stream.pipe(fileStream);
// 监听
文件
流
是否写入完成
fileStream.on('finish', () => {
console.log('file stream written to file');
在上面的示例代码中,子进程将
文件
流
发送给父进程,并在发送完成后触发回调函数。父进程接收到
文件
流
后,创建一个可写入的
文件
流
,并将
文件
流
写入到
文件
中。在
文件
流
写入完成后,父进程触发 `finish` 事件,表示
文件
流
已经写入完成。