工作生活

托拽文件并读取文件demo

2019-06-29  本文已影响0人  coffee1949

package.json

{
  "name": "04-dragfile-readfile",
  "version": "1.0.0",
  "description": "",
  "main": "main.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "electron ."
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}

main.js

const { app, BrowserWindow } = require('electron')
const path = require('path')

let mainWindow = null

function createWindow(){
    mainWindow = new BrowserWindow({
        width: 960,
        height: 600,
        webPreferences: {
            nodeIntegration: true
        }
    })

    mainWindow.loadURL(path.join("file://",__dirname,"index.html"))

    mainWindow.webContents.openDevTools()

    mainWindow.on('closed',()=>{
        mainWindow = null
    })
}

app.on('ready',()=>{
    createWindow()
})

app.on('window-all-closed',()=>{
    if(process.platform == 'darwin'){
        app.quit()
    }
})

app.on('active',()=>{
    if(mainWindow === null){
        createWindow()
    }
})

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>electron</title>
    <style>
        div{
            width: 100%;
            height: 400px;
            background-color: rebeccapurple;
        }
    </style>
</head>
<body>
    <div class="content"></div>

    <script src="./renderer.js"></script>
</body>
</html>

renderer.js

const fs = require('fs')

let content = document.querySelector('.content')

// 这个默认事件必须阻止下
content.ondragenter = content.ondragover = content.ondragleave = function(){
    return false
}

content.ondrop = function(e){
    // 阻止默认事件
    e.preventDefault()

    // 看下事件对象是个什么鬼东西
    console.log(e)
    console.log(e.dataTransfer.files[0])
    console.log(e.dataTransfer.files[0].path)

    // 拿到拖拽的文件路径
    let filePath = e.dataTransfer.files[0].path

    // 使用node的fs模块读取托拽的文件 && 把文件内容填到div.content中
    fs.readFile(filePath,'utf8',(err,data)=>{
        if(err){
            return err
        }
        content.innerHTML = data
    })
}
上一篇下一篇

猜你喜欢

热点阅读