Importing Files
To import files using the importFile()
or bulkImportFile()
functions, you need to do one of the following for each file:
-
Pass its MIME type in the
mimeType
field of the request. For example,mimeType: 'image/jpeg'
. -
Include its extension in either the
displayName
orurl
field of the request. For example,displayName: 'Example Image.jpeg
orurl: https://www.example.com/image.jpeg
. -
Ensure the server hosting the file supports HEAD requests. In these cases the Wix servers can retrieve the MIME type from the hosting server.
Note: If you want to validate the media type, pass the file's expected media type in the optional
mediaType
field of the request. For example,mediaType: 'IMAGE'
.
Knowing when a file is ready
When you import a file using the importFile()
or bulkImportFile()
function, or upload a file, it's not immediately available, meaning you can't manage or use the file straight away. Files can take time to import or upload and be processed. This is true even though the function used to import or upload a file returns a successful response.
To run code when a file finishes processing successfully, use the onFileDescriptorFileReady()
event.
To run a code block when a file's import fails, use the onFileDescriptorFileFailed()
event.
Using externalInfo
The importFile()
, bulkImportFile()
, generateFileUploadUrl()
, and generateFileResumableUploadUrl()
functions have a parameter called externalInfo
.
Arguments passed to this parameter are included in the event bodies of the onFileDescriptorFileReady()
and onFileDescriptorFileFailed()
events. This is the only place they appear.
Use externalInfo
to pass information to the events that isn't contained in the file descriptor object.
externalInfo
use case
Here is a sample flow to show how you could use externalInfo
effectively.
There is a form on a site that sends site visitors a confirmation email with the details they submitted in the form. One of the form fields is an image URL. In the email, we want to send a Wix download URL for the image, not the original image URL. This means we can only send the email when the image file is ready to download.
To implement this, we use the following flow:
- When the user submits the form, send the form information to a data collection, getting back the form data's
_id
. - Use
importFile()
to upload the image to the Media Manager. Include theexternalInfo
parameter as follows:Copy1 - Add the
onFileDescriptorFileReady()
event in your events.js file, and implement the following steps to handle the event:- Check that the value for
externalInfo.origin
isformBuilder
. We don't want to run this code if media was added from a different source. - Use the form data's
_id
to retrieve the form details from the CMS. - Generate a download URL for the image.
- Send the confirmation email with the download URL and the rest of the form details.
- Check that the value for