first of all, at this package, assumed public > upload directory is Root directory for destination place for files uploaded and You should not mention it in the address
for example: public/upload/product/7/image/picture.jpg
In the SmartStore method, the file type is examined using the mimetype and based on its type, the folder is created and you do not need to consider a folder for a particular type in the declaration.
for example if file is one of these mime type:
In fact, a folder called the image is created and used for storing, and you give this path to method product/7 instead product/7/image
In the copy and cut method, the destination path must exist, and if it does not, you will get a mistake. In the smart way, if the destination does not exist, it initially creates it and then continues.
Warning: If the destination file already exists, it will be overwritten.