找回密码
 立即注册

QQ登录

只需一步,快速开始

test_tao

注册会员

3

主题

10

帖子

31

积分

注册会员

积分
31
最新发帖
test_tao
注册会员   /  发表于:2023-3-4 15:22  /   查看:1567  /  回复:9
1金币


目前已使用input的方式加载sjs文件,并且成功
现在需要读取后台sjs文件,自动加载

参考了【新提醒】SpreadJS + Vue + Axios 实现服务端加载sjs、ssjson、xlsx - SpreadJS & GcExcel专区 - 教程集锦 - 葡萄城产品技术社区 (grapecity.com.cn)
与【新提醒】【SpreadJS v16.0 新特性预览】全新的 SpreadJS 文件格式 SJS - SpreadJS & GcExcel专区 - 产品动态 - 葡萄城产品技术社区 (grapecity.com.cn)

下面的我的代码,获取到blob后,无法进入open的成功函数里面


axios({
                method: "get",
                url: "__PUBLIC__/uploads/jjg/wc.sjs",
                // data: fd,
                responseType: "blob",
            }).then(
                response => {
                    let blob = new Blob([response.data], {type: "application/zip"});
                    spread.open(blob,
                        function () {
                            console.log('加载');
                        },
                        function (e) {
                            console.log(e)
                        }
                    );
                },err=>{console.log(err)
                    

        });




image.png174053343.png

最佳答案

查看完整内容

都可以,网上有很多类似教程例如: https://segmentfault.com/a/1190000020032880 ajax本质还是xhr 传输Blob类型数据需要使用FormData对象,是因为在实际传输过程中,XHR对象默认使用的是application/x-www-form-urlencoded格式,这种格式不支持文件上传等二进制数据传输。而FormData对象可以通过特殊的方式将二进制数据以multipart/form-data格式进行编码,所以可以用来传输二进制类型的数据,比如Blob对象。FormData对象的ap ...

9 个回复

倒序浏览
最佳答案
最佳答案
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-3-4 15:22:50
来自 7#
本帖最后由 Clark.Pan 于 2023-3-27 09:46 编辑

都可以,网上有很多类似教程例如:
https://segmentfault.com/a/1190000020032880

ajax本质还是xhr
传输Blob类型数据需要使用FormData对象,是因为在实际传输过程中,XHR对象默认使用的是application/x-www-form-urlencoded格式,这种格式不支持文件上传等二进制数据传输。而FormData对象可以通过特殊的方式将二进制数据以multipart/form-data格式进行编码,所以可以用来传输二进制类型的数据,比如Blob对象。
FormData对象的append()方法可以接受三个参数,第一个参数是字段名,第二个参数是字段值,第三个参数是文件名称,可以将文件加入到表单中。而使用XHR对象发送数据的时候,可以将FormData对象传入send()方法中,这样浏览器就会自动识别Content-Type请求头,并将数据封装成multipart/form-data格式发送。因此,FormData对象是在传输Blob类型数据时必须使用的一种方式。

回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-3-6 14:11:30
2#
您好,是不是没有引入io.min.js的原因。V16的新方法open需要引入新的io.min.js
回复 使用道具 举报
test_tao
注册会员   /  发表于:2023-3-6 15:29:26
3#
Clark.Pan 发表于 2023-3-6 14:11
您好,是不是没有引入io.min.js的原因。V16的新方法open需要引入新的io.min.js

引用了的,使用demo里边用input输入框的方式成功把表格已经加载了,想通过后台加载的时候失败了
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-3-6 16:53:36
4#
您好,可以参考这个demo的写法

axios.zip

311.52 KB, 下载次数: 131

回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2023-3-6 17:00:49
5#
您好,关于此文章
https://gcdn.grapecity.com.cn/fo ... mp;extra=#pid616304
已上传前后端代码,及如何使用的动图。您可以再参考一下。

回复 使用道具 举报
test_tao
注册会员   /  发表于:2023-3-24 15:54:27
6#
Ellia.Duan 发表于 2023-3-6 17:00
您好,关于此文章
https://gcdn.grapecity.com.cn/forum.php?mod=viewthread&tid=160080&page=1&extra=#pi ...

你好,
我这边时通过前端ajax读取sjs的网络链接,然后处理response,
之前ssjson可以这么操作。
是不是sjs不能通过url读取这个方式?
sjs必须在后端读取?
回复 使用道具 举报
jiang2023
注册会员   /  发表于:2023-7-4 09:48:17
8#
test_tao 发表于 2023-3-24 15:54
你好,
我这边时通过前端ajax读取sjs的网络链接,然后处理response,
之前ssjson可以这么操作。

请问是如何解决的,我也遇到了这个问题
回复 使用道具 举报
test_tao
注册会员   /  发表于:2023-7-4 14:36:46
9#
jiang2023 发表于 2023-7-4 09:48
请问是如何解决的,我也遇到了这个问题

现在用的老办法,还是ssjosn,等后面项目对文件大小有有要求了再去研究了
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-7-4 19:08:46
10#
test_tao 发表于 2023-3-24 15:54
你好,
我这边时通过前端ajax读取sjs的网络链接,然后处理response,
之前ssjson可以这么操作。

您好,您是在使用ajax读取sjs时遇到了问题吗?

建议您发一个新帖,并且详细描述一下您的问题,我们这边帮您调查一下。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部