Search code examples
javascriptjsonajaxautodesk-forgeautodesk-designautomation

Error uploading single json file as input as workitem (DesignAutomation)


I could successfully compile design automation web application with input file, as RVT and Json attached. But I need to pass only a Json file, as input for workItem. in ForgeDesignAutomation.js, I wrote it as below. But looks like inputfile need to be stringified . Please help me to correct the syntax below.

here 'inputFile' is a Json file, I am not uploading any rvt file, as my addin takes only a json file as input, which is array of strings and return a rfa file as output.

How to stringify 'inputFile', when it is just a .json file ?

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);
            }
        });
    });
}

}


Solution

  • From your question, you have a client, that submits to your server, which then submits to Forge.

    That way, how you submit to api/forge/designautomation/workitems endpoint varies on how it's expecting the data. As you have a .json file, you don't need to stringfy is, it's passed as a file. If you decide to send it as data, then stringfy and adjust to data: { your JSON data here },

    Assuming the file came from your client to your server, you can then submit that JSON file to Forge as an input for your Workitem.