2009-05-03 11 views
19

Articolo completo: Sto lavorando a un progetto per la mia azienda che richiede agli utenti di ciascuna delle nostre sedi di caricare report generati da un software di terze parti. Tutti i report generati da questo software sono sempre collocati nella stessa directory. Alcuni dei nostri colleghi meno esperti di computer, a giudicare dall'esperienza passata (e in corso) con un compito altrettanto difficile: scaricare/salvare le fatture in una particolare directory da un sito Web di fornitori, avranno problemi a trovare la directory corretta da cui caricare.controlla la directory di lavoro per <input type = "file">?

I computer in ogni postazione è in esecuzione Windows Server 2003 e attualmente hanno IE6

Vorremmo aumentare la facilità d'uso e il rispetto impostando gli ingressi di file per puntare alla directory corretta per impostazione predefinita.

Inizialmente speravo di poter impostare i file direttamente nei valori di input, ma questo è per buoni motivi disabilitato nella maggior parte dei browser. E 'possibile tramite javascript o semplicemente nel codice HTML stesso controllare la directory che si apre quando l'utente preme il pulsante Sfoglia?

In caso negativo, quali altri suggerimenti su come realizzarlo? Anche qualcosa di semplice come un modo per impostare correttamente un collegamento sul desktop che costringerà il browser a utilizzare la directory di lavoro richiesta. (IE ignora apparentemente il parametro "start in" delle scorciatoie)

risposta

12

Non è possibile controllare il contenuto di un file di input utilizzando JavaScript per motivi di sicurezza. Altrimenti, è possibile creare un modulo nascosto con un campo di inserimento file, impostarlo su un percorso e inviare il modulo con JavaScript per caricare il file sul server senza che l'utente ne sia a conoscenza.

Purtroppo, non sono a conoscenza di un modo per impostare il percorso predefinito per il selettore di file. Se ce n'è uno, sono sicuro che sarà specifico del browser e può essere utilizzato solo impostando alcune opzioni sul lato client, non tramite HTML o JavaScript.

1

IE utilizza l'ultima cartella scelta per il caricamento di file. Se hai il controllo sui computer client, i miei consigli sono; mappare una lettera di unità alla cartella in cui si trovano i file. Questo può essere facilmente fatto usando un file cmd messo in autoload che chiama subst. Quindi istruisci gli utenti a inserire manualmente la lettera di unità, poiché è molto breve dovrebbe essere possibile scrivere un'istruzione molto chiara e facile da seguire. In bocca al lupo.

0

Non è possibile impostare il valore di un file di input, ovvero un problema di sicurezza.

È possibile utilizzare un controllo activex, anche se quella roba sta diventando obsoleta. Ci sono molti controlli activex di upload di file avanzati e scommetto che puoi sceglierne uno piuttosto economico.

impostazione del Registro di sistema per la directory download potrebbe fare il trucco: (anche se il suo un upload) e si dovrebbe capire come impostare ogni volta che aprono IE

HKCU\Software\Microsoft\Internet Explorer\DownloadDirectory 
3

Una rapida ricerca su Google sono risultati in JUpload - un open source firmato applet Java che sembra soddisfare tutte le vostre esigenze: sito http://jupload.sourceforge.net/

Demo: http://jupload.sourceforge.net/advanced_js_demo.html

sono sicuro che ci sono molti altri come applet Java il re e probabilmente non sarebbe troppo difficile da rotolare il tuo.

L'unica altra opzione che posso pensare è un'applicazione di caricamento del desktop.

+0

java è un po 'invasivo, non pensate? Ci sono molti controlli Activex e controlli di caricamento flash che sceglierei prima di dover installare un runtime di 100 MB + che risucchi risorse native, ecc. –

+1

I controlli di caricamento in Flash non lo taglieranno, seguono le stesse regole di sicurezza dell'HT di base - Nomi file e solo le estensioni. Hai ragione riguardo all'impronta di Java, ma sono altrettanto titubante nell'usare un controllo ActiveX e/o hack di registro. Chiamami pregiudicato, suppongo, ma preferirei OS/browser indipendente Java over e controllo ActiveX in esecuzione su IE ogni giorno: P – brianpeiris

0

Questo funziona. Qui dovevo assicurarmi che l'utente abbia usato il file immagine di input sul percorso dell'immagine locale dei client. L'UrlExists controlla semplicemente se il file può essere caricato sul percorso + nome file conosciuto. Avevo anche bisogno di rendere l'input migliore dei browser. Il trucco qui stava ponendo I canvas con più lavoro di quanto mostrato qui per mascherare l'input. Impostando l'opacità dell'ingresso su 0, Qui è impostato su 0,5 in modo da poter vedere il trucco.

<body> 
    <canvas id="FancyCanvasButton" tabindex="8" width="240" height="18" style="position: absolute; left: 100px; top: 120px; border: 1px solid rgb(0, 0, 0); z-index: 1;"></canvas> 
    <input type="file" accept="image/*" onchange="loadFile(event)" style="opacity:0.5;position: absolute; left: 100px; top: 120px; z-index: 2; " > 
    <img id="output"/> 
<script> 
var loadFile = function(event) { 
    var output = document.getElementById('output'); 
    var fName= "Images/" + event.target.files[0].name; //None path with users selected file name 
    if(UrlExists(fName)){ 
    output.src=fName;   //Do something like show image 
    }else{ 
    alert("File not present"); // Do something to show file not in this path 
    } 
}; 

function UrlExists(url) { 
    var http = new XMLHttpRequest(); 
    http.open('HEAD', url, false); 
    http.send(); 
    if (http.status != 404){ 
     return true; 
    }else{ 
     return false; 
    } 
    } 

    </script> 
+0

var fNome dovrebbe avere percorso noto con nome file utente i miei commenti dicevano "Nessuno" non "noto" –

+0

Non fa quello che chiede la domanda, quindi non funziona ... – IamGuest

1

In poche parole, è impossibile fare una cosa del genere. Come puoi vedere, tutte/la maggior parte delle risposte concordano con questa affermazione e quelle che non hanno frainteso la domanda. Ci dispiace, ma quello che stai cercando di fare è considerato un rischio per la sicurezza dalla maggior parte dei browser.

Problemi correlati