6

W poniższym chromowanym skrypcie użytkownika, w jaki sposób mogę uzyskać adres URL obrazu, który przeciągnęłam z pulpitu? Gdzie mam linię debugger, Dostaję pusty łańcuch dla e.dataTransfer.getData("text") i e.dataTransfer.getData("url")Jak uzyskać adres URL upuszczonego obrazu za pomocą skryptu chrome?

// ==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

więc wezwanie do konsoli dziennik niepoprawnie zalogować nazwę pliku? –

+0

@Fresh tak, zgłasza nazwę pliku, ale bez żadnej ścieżki. –

+1

Nie jestem pewien, czy dobrze rozumiem, ale jeśli to zrobię, nie będziesz mógł mieć ścieżki do pliku (co oznacza pełną ścieżkę usuniętego pliku). To "ochrona" przed przeglądarkami. Ale możesz przynajmniej uzyskać jego nazwę. Oto jsFiddle jak to zrobić: http://jsfiddle.net/U8yqL/1/ – Leiko

Odpowiedz

5

Nie wiesz dobrze zrozumieć, ale jeśli to zrobię, nie będzie mógł mieć ścieżkę do pliku (czyli usunięty plik fullpath).
To "ochrona" przed przeglądarkami. Ale możesz przynajmniej uzyskać jego nazwę.

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

Oto jsFiddle, jak to zrobić: jsFiddle demo

Powiązane problemy