首页 > 解决方案 > 自动化 Priority-Web-SDK 文件上传

问题描述

我想创建一个命令行(或其他自动化)方法,用于使用 Web-SDK 将文件上传到优先级。我现在最好的解决方案似乎是一个由 py​​thon 脚本激活的简单网络表单。

是否有在不打开浏览器的情况下使用 Javascript 和文件选择器的工具/示例?是否有其他环境的 Priority-Web-SDK 端口?C#、Python 等?

任何其他建议也欢迎。

2020 年 6 月 14 日更新:
我能够使用 Javascript、Python 和 C# 的组合完成此客户端的任务。确实是一团糟,但文件已上传。我现在正在重新审视这项任务并寻找更清洁的解决方案。

我找到了一个工作且可用的 Node 模块,可以将程序压缩为可执行文件,使其成为可行的部署选项。

所以问题变得更加集中=>在没有浏览器表单的情况下为uploadDataUrl() 或uploadFile() 创建输入。

标签: javascriptfile-uploadpriority-web-sdk

解决方案


这个 nodejs 脚本会将文件上传到 Priority。确保fetch-base64已安装 npm:

"use strict";

const priority = require('priority-web-sdk');
const fetch = require('fetch-base64');

const configuration = {...};

async function uploadFile(formName, zoomVal, filepath, filename) {
  try {
    await priority.login(configuration);
    let form = await priority.formStartEx(formName, null, null, null, 1, {zoomValue: zoomVal});
    await form.startSubForm("EXTFILES", null ,null);
    let data = await fetch.local(filepath + '/' + filename);
    let f = await form.uploadDataUrl(data[0], filename.match(/\..+$/i)[0], () => {});
    await form.fieldUpdate("EXTFILENAME", f.file); // Path
    await form.fieldUpdate("EXTFILEDES", filename);  // Name
    await form.saveRow(0);
  } catch(err) {
      console.log('Something bad happened:');
      console.dir(err);
  }
}

uploadFile('AINVOICES', 'T9679', 'C:/my/path', 'a.pdf');

推荐阅读