6

Nel seguente script utente di Chrome, come posso ottenere un URL per un'immagine che trascino dal desktop? dove ho la linea debugger, sto ottenendo la stringa vuota per e.dataTransfer.getData("text") e e.dataTransfer.getData("url")Come ottengo l'URL per un'immagine rilasciata usando un chrome userscript?

// ==UserScript== 
// @match http://*/* 
// @match https://*/* 
// ==/UserScript== 

function preventDrag(e) { 
    e.stopPropagation(); 
    e.preventDefault(); 
} 

function handleDrop(e) { 
    console.log("Just dropped: " + e.dataTransfer.files[0].name); 
    debugger 
    // TODO: grab the url for e.dataTransfer.files[0] 

    e.stopPropagation(); 
    e.preventDefault(); 
} 

document.addEventListener('drop', handleDrop, false); 
document.addEventListener('dragenter', preventDrag, false); 
document.addEventListener('dragover', preventDrag, false); 
+0

Così la chiamata a consolare registro fa registrare correttamente il nome del file? –

+0

@Fresh si, riporta il nome file, ma senza alcun percorso. –

+1

Non sono sicuro di capire bene, ma se lo faccio, non sarai in grado di avere un percorso di file (che significa il percorso completo del file). È una "protezione" dai browser. Ma puoi almeno prenderne il nome. Ecco un jsFiddle su come farlo: http://jsfiddle.net/U8yqL/1/ – Leiko

risposta

5
Non

sicuri di capire bene, ma se lo faccio, non sarà in grado di avere un percorso di file (che significa il file completo percorso completo).
È una "protezione" dai browser. Ma puoi almeno prenderne il nome.

var file = e.originalEvent.dataTransfer.files[0], 
     reader = new FileReader(); 

    reader.onloadend = function (event) { 
     console.log(file); 
     // filename is in file.name 
     // ... do something here 
    } 
    reader.readAsArrayBuffer(file); 

Ecco una jsFiddle di come farlo: jsFiddle demo

Problemi correlati