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

标签 javascript node.js electron

(我是一名 Actionscript/Flex 开发人员,正在转向 Javascript。这可能是一个愚蠢的问题并且是重复的,但我不知道该问题是否与 Javascript、Electron、一般的 Web 开发有关等等。请友善。)

我一直在使用 Electron 和 OSX 的 Fabric.js 开发一个简单的项目。其功能是用户可以选择本地镜像文件并对其进行注释。效果很好,我学到了很多东西。然而,我把它带到 Windows 上,由于用户选择的图像文件的路径被修改,它崩溃了。

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

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

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

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

[ 'C:\\Users\\Windows7\\Desktop\\assets\\house.jpg' ]
<小时/>

在 Electron ( Node ?)上下文中:

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);
}

最佳答案

在 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

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

关于javascript - 所有反斜杠将从本地文件路径中删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41578002/

相关文章:

javascript - JSON 数据字符串替换和日期格式化

javascript - 如何使用 JavaScript 和 HTML 组合框 (<select>) 加载文本文件?

javascript - 如何在 javascript 中打开文件流?

javascript - 具有 http 服务器、websocket 和 express 的架构

javascript - 如何通过 Promise 重用 mongodb 连接

node.js - Electron --serve在缺少package.json时失败

javascript - 我需要导入/需要一个 Node 模块 - 但它包含一个大于 4kb 的 wasm 文件。我的应用程序是一个 Electron 应用程序。我怎样才能使这项工作?

javascript - PhoneGap 后退按钮退出应用程序

javascript - Connect-busboy : When piping file to write steam, 文件为空或不正确,具体取决于类型

electron - 在基于 Electron 的桌面应用程序中查找用户桌面空闲时间的最佳方法