Main asset management features in Commerce Manager:
· remote files and folders browsing;
· file download;
· file upload;
· image file preview.
File upload feature in Commerce Manager application should be a convenient way to relate assets to other e-commerce entities. Required features:
· should be convenient and smoothly integrate into e-commerce managing processes;
· UI should be work the same on all environments (Azure, file system storage);
· access to this feature should be controlled by Commerce Manager permissions; no other configuration changes should be needed;
· file upload should report progress for large files; TODO: create UI design for such approach
· should support drag&drop from local file system;
· should support simultaneous multiple files upload.
Note: It's done directly in an environment that a manager is a familiar with. Single dialog for asset upload and select (relate or download) makes the most effective use of it.
· IAssetService should be used for all asset related operations. Some methods are implemented already and won't be included in this document.
· Separate implementation is needed for every asset storage environment. Azure Blob and file system based storage environments are currently supported.
· IAssetService.Upload method should be created and used from the Commerce Manager for uploading.
· Method signature: void Upload(UploadStreamInfo info);
· If an image was uploaded, a thumbnail should be generated for it.
Image file preview
· Method signature: byte GetImagePreview(string blobKey);
· Method should search for pregenerated thumbnail and return it if found. A new thumbnail should be generated, saved it to the storage and returned otherwise.
· Generated thumbnail should be 100 pixels width. Height should be recalculated in proportion to width.
· Generated thumbnail should be less than 8KB size.
Azure Blob implementation
· The generated thumbnail should be saved as Blob metadata as it's less than 8KB. ("The whole metadata item (key and value together) cannot exceed 8K in size.")
File system implementation
· The generated thumbnail should be saved in a separate file. File name is constructed as <file name> + ".thumb" + <file extention>. (e.g. file.png and file.thumb.png).