【问题标题】:Error uploading single json file as input as workitem (DesignAutomation)将单个 json 文件作为工作项的输入上传时出错 (DesignAutomation)
【发布时间】:2023-03-29 09:15:01
【问题描述】:

我可以使用 RVT 和 Json 附加的输入文件成功编译设计自动化 Web 应用程序。 但我只需要传递一个 Json 文件作为 workItem 的输入。在 ForgeDesignAutomation.js 中,我将其编写如下。但看起来 inputfile 需要被字符串化。请帮我更正下面的语法。

这里的 'inputFile' 是一个 Json 文件,我没有上传任何 rvt 文件,因为我的插件只接受一个 json 文件作为输入,它是字符串数组并返回一个 rfa 文件作为输出。

当 'inputFile' 只是一个 .json 文件时,如何对它进行字符串化?

function startWorkitem()
{
var inputFileField = document.getElementById('inputFile');
if (inputFileField.files.length === 0) { alert('Please select an input file'); return; }
if ($('#activity').val() === null) { alert('Please select an activity'); return };
var file = inputFileField.files[0];

let activityId = $('#activity').val();
if (activityId == null)
{
    alert('Please select an activity'); return
};

if (activityId.toLowerCase() === "myfirst_da4ractivity+dev")
   {
    startConnection(function () {
        var formData = new FormData();
        formData.append('inputFile', file);
       //file is not uploading-------I think I could not pass the Json file. 
       //I need to pass connection ID here too. 
        writeLog('Uploading input file...');
    $.ajax({
            url: 'api/forge/designautomation/workitems',
            dataType: 'json',
            data: formData,
            processData: false,
            contentType: false,
            type: 'POST',
        success: function (res)
            {
                writeLog('Workitem started: ' + res.workItemId);
            }
        });
    });
}

}

【问题讨论】:

  • 很遗憾,您的原始帖子中没有足够的信息来回答这个问题。如果您正在修改现有代码示例并且您的修改不起作用,提及原始代码和您的更改可能会帮助我们回答。至于能够将输入 json 发送到设计自动化工作项,请参考 SketchIt 示例:这是服务器端代码:github.com/Autodesk-Forge/forge-sketchit-revit/blob/…github.com/Autodesk-Forge/forge-sketchit-revit
  • 是的,没错,我没有正确写出问题。谢谢回复。我正在使用 dotnet 核心。服务器端的控制器和客户端的 JavaScript/ajax。在网络表单中,我只传递一个 Json 文件。我正在关注两个示例代码,它们都使用 revit 文件,它们都没有只使用 Json 文件作为输入,作为 formdata。我广泛进行插件开发,但这是第一次前端/后端通信。所以犯了一些愚蠢的错误。很快就会克服。会带着一个更好的问题回来:) 试图理解示例代码,以及发生了什么:)
  • 嗨@nayran,看看stackoverflow.com/questions/62286622/…我想你的问题是一样的,查尔斯·多德森在那里回答得很好。

标签: javascript json ajax autodesk-forge autodesk-designautomation


【解决方案1】:

根据您的问题,您有一个客户端,它提交给您的服务器,然后提交给 Forge。

这样,您提交到api/forge/designautomation/workitems 端点的方式取决于它对数据的期望方式。因为你有一个.json 文件,所以你不需要 stringfy,它作为文件传递。如果您决定将其作为数据发送,则 stringfy 并调整为 data: { your JSON data here },

假设文件来自您的客户端到您的服务器,然后您可以将该 JSON 文件提交到 Forge 作为您的 Workitem 的输入。

【讨论】:

  • 感谢您的回复!在过去的几天里,我明白了这一点。但是现在出现了一个新问题,我有一个 rfa 文件和一个大 Json 文件作为工作项上传。我是否需要将 json 内容上传到云存储并将签名的 url 作为输入参数 URL 传递给文件?有没有显示多个输入文件的示例?我现在没有看到任何语法错误。 Json 文件现在不大于 4 kb,但以后会很大。一切看起来都很好。代码堆栈在 :WorkItemStatus workItemStatus = await _designAutomation.CreateWorkItemAsync(workItemSpec);
  • 太好了,很高兴它的工作。如果这个问题完成了,请“接受为答案”。我看到你已经发布了另一个问题,一位同事正在调查它。
猜你喜欢
  • 1970-01-01
  • 2020-10-01
  • 1970-01-01
  • 2015-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-03
  • 1970-01-01
相关资源
最近更新 更多