所有反斜杠都将从本地文件路径中删除

时间:2017-01-10 20:41:56

标签: javascript node.js electron

(我是一个Actionscript / Flex开发人员,正在向Javascript过渡。这可能是一个愚蠢的问题而且重复但我不知道这个问题是否与Javascript,Electron,web开发有关一般来说,请善待。)

我一直在使用Electron和使用OSX的Fabric.js开发一个简单的项目。功能是用户可以选择本地图像文件并对其进行注释。工作正常,我学到了很多东西。但是我把它带到了Windows,并且由于用户选择的图像文件的路径被破坏而中断。

出于某种原因,所有反斜杠都将从路径中删除。有人可以解释发生了什么以及我如何解决这个问题吗?

  

OSX
  路径 /Users/Rocket/Desktop/house.jpg
   cmd: loadImage(" /Users/Rocket/Desktop/house.jpg")
   loadImage: /Users/Rocket/Desktop/house.jpg

     


  路径: C:\ Users \ Windows7 \ Desktop \ assets \ house.jpg
   cmd: loadImage(" C:\ Users \ Windows7 \ Desktop \ assets \ house.jpg")
   loadImage: C:UsersWindows7Desktopassetshouse.jpg

如果我记录filenames回调的filePickerCallback参数,我会看到所有双反斜杠。当我在变量中使用该数组的第一项时,所有双反斜杠都转换为单反斜杠。莫名其妙。

[ 'C:\\Users\\Windows7\\Desktop\\assets\\house.jpg' ]

在电子(节点?)上下文中:

function showFilePicker() {
    var options = {
        title: "Select Image",
        properties: ['openFile'],
        filters: [
            { name: 'Images', extensions: ['jpg', 'png'] },
        ],
    }
    dialog.showOpenDialog(mainWindow, options, filePickerCallback);
}

function filePickerCallback(filenames) {
    if (filenames && filenames.length > 0) {
        var path = filenames[0];
        console.log('path',path);

        var cmd = 'loadImage(' + '\"' + path + '\"' + ')'
        console.log('cmd', cmd);

        mainWindow.webContents.executeJavaScript(cmd);
    }
}

在渲染上下文中

function loadImage(filepath) {
    console.log('loadImage', filepath);
}

1 个答案:

答案 0 :(得分:1)

在javascript中,反斜杠被解释为下一个字符的转义。

`console.log('\a\b\c');` 
             //==>  ac   ( escaped a is a, escaped b is backspace ,  escaped c is c'

如果你想在你的字符串中使用反斜杠,你也必须逃避它们

`console.log('\\a\\b\\c');` 
            //==> \a\b\c

换句话说,\中的第一个反斜杠被作为转义指示符吃掉:)