活字格V9获取图片失败bug,报错404,了解存储路径,已改为批量上传和批量获取

项目场景:

问题描述

原因分析:

解决方案:

完成了批量上传功能,这插件真的很方便

于是写了个批量获取附件的js代码,我真厉害


项目场景:

活字格V9版本获取图片链接Upload

【9.0.103.0】图片上传的存储路径和获取问题 - 活字格专区 - 求助中心 - 葡萄城开发者社区 (grapecity.com.cn)


问题描述

他们给的文档解释:
看完必恍然大悟的活字格内幕:五十五、活字格附件存储原理详解 - 活字格专区 - 专题教程 - 葡萄城开发者社区

(出处: 葡萄城开发者社区)


原因分析:

这个文档和我的情况不太一样,

他说的活字格设计时的附件存储路径是同级目录下以应用名+_fgcfiles命名的文件夹

而我的活字格设计时的附件存储路径C:\ProgramData\Forguncy\Garimi\303\WebSite\Upload\Temp

我的存储路径连应用名都没有


解决方案:

用了个插件

完成了批量上传功能,这插件真的很方便

奶奶滴,这请求路径和文档给的根本不一样好吗,我真服了

路径:http://${window.location.host}/Forguncy/FileDownloadUpload/Download?file=

于是写了个批量获取附件的js代码,我真厉害

javascript 复制代码
//imgs=ffc31308-ec72-4268-a977-16f4c366a75f_whitepig.png|3e8582d5-7e4b-4544-8e51-446ba8f70905_blackpig.png
//img[1]=ffc31308-ec72-4268-a977-16f4c366a75f_whitepig.png
//img[2]=3e8582d5-7e4b-4544-8e51-446ba8f70905_blackpig.png
//....
const imgs = Forguncy.Page.getCell("img").getValue();
const imgArray = imgs.split("|");
//遍历imgArray
for (let i = 0; i < imgArray.length; i++) {
    (function(index) {
        var img = `http://${window.location.host}/Forguncy/FileDownloadUpload/Download?file=` + imgArray[index];
        var image = new Image();
        var base64;
        image.src = img;
        console.log("第" + index + "轮次的src:" + image.src);
        image.onload = function () {
            base64 = getBase64Image(image);
            console.log(index + base64);
            Forguncy.modifyTablesData({
                image: {
                    addRows: [
                        {
                            name: getImgName(imgArray[index]),
                            code: imgArray[index],
                            base64: base64,
                            is_identify: false
                        }
                    ],
                }
            });
        }
    })(i);
}


function getBase64Image(img) {
    var canvas = document.createElement("canvas");
    canvas.width = img.width;
    canvas.height = img.height;
    var ctx = canvas.getContext("2d");
    ctx.drawImage(img, 0, 0, img.width, img.height);
    var ext = img.src.substring(img.src.lastIndexOf(".") + 1).toLowerCase();
    var dataURL = canvas.toDataURL("image/" + ext);
    return dataURL;
}

function getImgName(input) {
    var match = input.match(/_([^_]*)(?:\.|$)/);
    var result = match && match[1];
    return result || null;
}
相关推荐
_李小白5 小时前
【Android FrameWork】第二十四天:Activity生命周期是如何运行的
android
ytttr8735 小时前
基于C#的CAN总线数据解析BMS上位机
android·unity·c#
darryrzhong6 小时前
FluxImageLoader : 基于Coil3封装的 Android 图片加载库,旨在提供简单、高效且功能丰富的图片加载解决方案
android·github·android jetpack
pandarking7 小时前
[CTF]攻防世界:题目名称-warmup
android·web安全·网络安全
我命由我123457 小时前
Android 开发问题:在无法直接获取或者通过传递获取 Context 的地方如何获取 Context
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
惟恋惜7 小时前
Jetpack Compose之“副作用”的讲解
android
モンキー・D・小菜鸡儿9 小时前
Android14 新特性与适配指南
android·kotlin·安卓新特性
技术摆渡人9 小时前
Android系统技术探索(1)启动流程
android
介一安全12 小时前
【Frida Android】实战篇12:企业常用对称加密场景 Hook 教程
android·网络安全·逆向·安全性测试·frida
モンキー・D・小菜鸡儿12 小时前
Android15 新特性与适配指南
android·kotlin·安卓新特性