I'm trying to upload files to Appwrite's storage bucket using the REST API, but I keep encountering the following error:
TypeScript
{
"message": "Param \"fileId\" is not optional.",
"code": 400,
"type": "general_argument_invalid",
"version": "1.6.1"
}
What I’ve Tried:
- I'm using a fileId generated by UUID.randomUUID() in Java, but I still get the error. Here's an example of the fileId I'm sending: 123e4567-e89b-12d3-a456-426614174000.
- I’ve also tried passing ID.unique() in the payload for fileId, but it doesn’t seem to work.
Here's my code;
TypeScript
public Map<String, Object> uploadFile(MultipartFile file) throws Exception {
String url = appwriteEndpoint + "/v1/storage/buckets/" + appwriteBucketId + "/files";
String fileId = UUID.randomUUID().toString().replace("-", "").substring(0, 36);
Map<String, Object> operations = new HashMap<>();
operations.put("query", "mutation CreateFile($bucketId: String!, $fileId: String!, $file: InputFile!) { storageCreateFile(bucketId: $bucketId, fileId: $fileId, file: $file) { id } }");
Map<String, Object> variables = new HashMap<>();
variables.put("bucketId", appwriteBucketId);
variables.put("fileId", fileId);
variables.put("file", null);
operations.put("variables", variables);
// Build multipart request here (details omitted for brevity)...
}
Questions:
- Are there additional constraints for the fileId parameter that I might be missing?
- Is there something wrong with the way I’m structuring the multipart/form-data payload?
- How should ID.unique() be handled if passed programmatically via REST?
TL;DR
Issue: Developers facing an error message stating "Param 'fileId' is not optional" when trying to upload files to Appwrite's storage bucket via the REST API.
Solution:
1. Ensure the fileId for the file is properly generated, try using UUID.randomUUID().toString() without modification.
2. Check if the multipart/form-data payload structure aligns with Appwrite's requirements.
3. Handle ID.unique() appropriately when passing it programmatically via REST to avoid errors.Recommended threads
- API Key Generation Error
When i try to create an API key with duration (Forever), a popup shows: Invalid `expire` param: Value must be valid date between 0000-01-01 00:00:00 and 9999-12...
- Credit Issue
I had 25 credit left But now, it shows expired and I thought Pro was going to stay for 2 months, but I, used 1 month
- How to access oldValue payload in functi...
I want to record old and new values of data changes as audits. But when i try to read row in function. The value is new already even before grt updated