如何使用Node JS将图像从一个目录复制\移动到另一个目录?

时间:2017-11-05 07:57:18

标签: javascript node.js filereader

我在节点JS和JavaScript中创建了一个聊天应用程序。我正在给用户一个自由的手上传他们的图片的个人资料。

我正在使用Node JS mv模块并尝试将用户select文件移动或复制到我的特定目录。我正在使用Socket.io与节点进行通信。

问题是,当用户选择图像文件时,我使用的是input[type=file],我得到了此图像文件的value

这是我得到的回报:C:\fakepath\image.png

当我将其传递给mv方法时,由于No such directory,它会抛出错误:fakepath。我试图获取文件的真实路径以将其传递给mv方法,以便它可以将文件移动到我想要的目录。我尝试使用FileReader(),然后调用fr.readAsDataURL(file);并返回以下文字:

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAMAA...... // shortened

这是我的Javascript

var file_inp = document.getElementById("upl_img");
   file_inp.addEventListener("change",(e)=>{

      if('files' in file_inp){
         if(file_inp.files.length==0){
            alert("Select an Image to upload !");
         }else{

            var file = file_inp.files[0];
            var fr = new FileReader();
              console.log(file_inp.value);

            if(file){
              fr.readAsDataURL(file);
            }

            fr.onloadend = ()=>{
              console.log(fr.result)
              socket.emit("upload_image",{path:fr.result,name:file_inp.files[0].name,size:file_inp.files[0].size})
            }

         }
      }

   })

这是节点脚本

socket.on("upload_image",(data)=>{

    mv(data.path, './user_images', function(err) {
        if(err) throw err;
        console.log('File Moved ! ')          
    });             

})

注意: 我只需要在用户选择图片时将文件移至user_images目录。

0 个答案:

没有答案