Unable to get file or file path from a MultipartFile object
Request Statement
Hello Team,
Thank you for maintaining and enhancing the Dio library; it's an essential tool for many developers. I am using the latest version of Dio and encountered a limitation that affects my use case.
Context
I am implementing a feature that requires generating a checksum key by encrypting the entire payload during request interception. While encrypting, I must include file information (e.g., file path or file content) in the checksum generation for requests containing MultipartFile.
Current Issue
Currently, the MultipartFile class does not provide a direct way to access file information such as the file path or File object during request interception. This limitation makes it challenging to include the file content in the encryption process.
Feature Request
I kindly request the addition of a parameter or method in the MultipartFile class to access file information, such as:
The file path (if applicable). A File object (if the source file exists).
Example
final file = MultipartFile.fromFileSync('path/to/file', filename: 'example.txt');
// Access file information
print(file.filePath); // Outputs: path/to/file
print(file.file); // Outputs: File object
Benefits
Enables comprehensive payload encryption during interception, including file content. Simplifies workflows that rely on accessing file metadata or content.
Thank you for considering this feature request. I am happy to provide additional details or talk about this more if you need them.
Solution Brainstorm
No response
Hi, can i implement this feature?
Some workarounds:
I did not test it myself, but are you looking for the Options.requestEncoder?
You can pass those Options to your request, which seems to let you encode the request.
Another way would be to pass the encryption logic to MultipartFile.fromStream() and probably subclass that.
You might use the extension type to extend MultipartFile. A MultipartFile is defined as based on Stream and to be read only once.
https://dart.dev/language/extension-types