Importing Files in Directus Automate
Published May 23rd, 2024
In this quick tip, you will learn how to import files inside of Flows as part of Directus Automate.
Directus doesn’t ship with an operation to import files via URL the same way you can across the Data Studio. Thankfully, you can utilize the Directus API inside of Flows to achieve the same result.
Setting Up the Operation
In an existing Flow, create a Webhook / Request URL operation. All of the settings will match the File Import endpoint:
- Method: POST
- URL:
your-directus-project/files/import
, replacingyour-directus-project
your project URL - Request Body:
{ "url": "file_url" }
As noted in the API reference, you can also add a data
object in the request body with any additional file object properties - like tags
, description
, or focal_point
.
Permissions
If you run a flow with the operation above, it will work if there is a public create permission on the directus_files
collection. If this isn’t the case, generate a static access token for a user with the correct permission (you may need to create a ‘user’ for this purpose) and add a header:
- Header:
Authorization
- Value:
Bearer your-token
, replacingyour-token
with the access token.
Returned Data
As we are using the API directly, this operation returns a full response body. That means the id
of the new file is available at {{ step.data.data.id }}
, where step
is your operation key, or $last
in the following operation.
Limitations
The only real limitation to this approach is that you must provide a fixed Directus Project URL - the operation does not allow relative URLs. Your project URL is unlikely to change, but updating any operations using this approach will be required.