How can I duplicate a file (completely) but change it's name?

Viewed 40

So I need to generate the smaller previews of the image files that will be uploaded and I have to append "_preview" at the end of each file name.

Currently I'm doing this:

uploadFile.map((file) => {
      if (file.type.includes('image')) {
        console.log('Generating thumbnail for ' + file.name)
        const fileName = file.name.split('.').slice(0, -1).join('.')
        const fileExtension = file.name.split('.').pop()
        const compressedFile = new File(
          [file.slice(0, file.size, file.type)],
          fileName + '_preview.' + fileExtension,
        )
        console.log('Generated file:', compressedFile)
        convert({
          file: compressedFile,
          width: 300,
          height: 300,
          type: fileExtension,
        })
          .then((resp) => {
            uploadFile.push(resp)
          })
          .catch((error) => {
            // Error
            console.error('Error compressing ', file.name, '-', error)
          })
      }
    })

The problem is that "compressedFile" is missing some fields which were present in the original file and so the convert functoin throws the error "File type not supported". As you can see "type" and "webkitRelativePath" are not copied.

enter image description here

Can anybody suggest how I can retain all the information from the original file and just append _preview at the end of file name?

2 Answers

for copy code in js or duplicate, you can use this code


    //copyfile.js
    const fs = require('fs');
    
    // destination will be created or overwritten by default.
    fs.copyFile('C:\folderA\myfile.txt', 'C:\folderB\myfile.txt', (err) => {
      if (err) throw err;
      console.log('File was copied to destination');
    });

Related