There is no native way to upload multiple files at once in Knack. There are a few custom code solutions on this forum but I thought I would share another way of adding this functionality to your app by leveraging two other no-code tools: Jotform and Integromat.
The concept is to use a dynamic embed Jotform form inside of Knack, the submission triggers an Integromat scenario that upload the files in Knack and create the connection with the parent record.
This method is interesting because it can be applied to many different apps that can be embedded. for example I used a similar method to build a Calendly integration.
I chose Jotform because it is a very powerful form builder with a great “Upload” field but it is possible to achieve similar results with other online form builder.
Hi there, I’m looking at your solution and I’m interested in implementing it. I’ve used Jotform for some projects previously and agree it has some great features.
I just posted an issue regarding filenames getting changed by Knack and I’m curious, before I attempt your suggestion, do the filenames stay the same or do they get changed like the standard file upload field.
Hi, I just checked, and the file name get changed the same way as when you use the API. What I would recommend is to create an object for your uploads with a proper file name field. This way you have full control
Could you elaborate more? I’ve spent the last three days reconstructing my app from Airtable to Knack but this is a deal killer for my project. If you have a solution I would be most interested in it.
the filename value you are referring to is part of the file upload field and you have no control over this formatting. So my recommendation is to use a dedicated object for files and add a name field.
Example:
Let’s say currently you have an app to track job applicants. On your Applicant object you have a file field.
Instead you should have this DB structure:
Your Applicant object has a connection field to a File object. Your file object has a file field and a file name field where you can store the original file name and use it as you wish downstream
Hi Loic,
I now understand what you are saying. I just spoke to my client about this issue and also additional details. He confirmed that it is really important that the files have the original file name. A big piece of the motivation behind this project is tracking the files. Another point to note is the ultimate repository for the files is in Dropbox, not Knack. He also told me that there is the possibility of multiple files per transaction.
What are your thoughts on the feasibility of this solution based on your use of Jotform.
Upload multiple files in jotform, grab and store all the file names in the record, zip all the files, store the zip in knack record, archive original files in dropbox.
It is totally doable. I am not sure I understand the point of having a zip rather than have multiples files. I have created a similar feature (without the zip) to sync files between Google drive and Knack and it works well.
this is awesome and all set up now apart from one hitch: The uploaded file is coming through as HTML script rather than the file itself. I don’t think it is relevant but I am also uploading to G Drive then adding a link to the Knack record.
I am using the value from the iterator step as the file data and have also tried the Request.fileUpload value from the Jotform Trigger step but no joy there either.
The data should come from the HTTP module that GET the file from the URL. You need to use your API key in the header because it is a secure URL coming from Jotform. Also, make sure you iterate your file array. So your sequence should look like that: