2009-05-03 3 views
19

Полная история: Я работаю над проектом для своей компании, который требует от пользователей в каждом из наших мест загружать отчеты, созданные сторонним программным обеспечением. Все отчеты, созданные этим программным обеспечением, всегда помещаются в один и тот же каталог. Некоторые из наших менее компьютерных грамотных партнеров, судя по прошлому (и постоянному) опыту с аналогичной трудной задачей: загрузка/сохранение счетов-фактур в конкретный каталог с веб-сайта поставщиков, будет иметь проблемы с поиском правильного каталога для загрузки.управлять рабочим каталогом для <input type = "file">?

компьютеры в каждом месте работают Windows Server 2003 и в настоящее время IE6

Мы хотели бы увеличить удобство использования и соблюдения установки входных файлов, чтобы указать правильный каталог по умолчанию.

Первоначально я надеялся, что у вас есть возможность установить файлы непосредственно во входных значениях, но это по уважительным причинам отключено в большинстве браузеров. Возможно ли использование javascript или только в самом HTML для управления каталогом, который открывается, когда пользователь нажимает кнопку обзора?

Если нет, то какие еще предложения о том, как это сделать? Даже то, что просто, как способ успешно установить ярлык на рабочем столе, который заставит браузер использовать требуемый рабочий каталог. (IE, по-видимому, игнорирует параметр «start in» ярлыков)

ответ

12

Вы не можете управлять содержимым ввода файла, используя JavaScript по соображениям безопасности. В противном случае вы можете создать скрытую форму с полем ввода файла, установить его в путь и отправить форму с помощью JavaScript, чтобы загрузить файл на свой сервер без ведома пользователя.

К сожалению, я не знаю способа установить путь по умолчанию для селектора файлов. Если он есть, я уверен, что он будет специфичным для браузера, и его можно использовать только при настройке какой-либо опции на стороне клиента, а не через HTML или JavaScript.

1

IE использует последнюю папку, выбранную для загрузки файлов. Если у вас есть контроль над клиентскими компьютерами, мои советы: сопоставьте букву диска с папкой, в которой находятся файлы. Это можно сделать легко, используя cmd-файл, помещенный в autoload call subst. Затем проинструктируйте пользователей вручную ввести букву диска, так как это очень коротко, что должно быть возможно написать очень четкую и легкую в использовании инструкцию. Удачи.

0

Вы не можете установить значение входного файла, что является проблемой безопасности.

Вы можете использовать элемент управления activex, хотя этот материал становится довольно устаревшим. Есть много расширенных элементов управления ActiveX ActiveX, и я уверен, вы можете выбрать один из них довольно дешево.

Параметры реестра для загрузки каталога может сделать трюк: (даже если сво загрузка) и вы должны выяснить, как установить это каждый раз, когда они открывают IE

HKCU\Software\Microsoft\Internet Explorer\DownloadDirectory 
3

Быстрый поиск Google привел в JUpload - с открытым исходным кодом Java подписал апплет, который, кажется, чтобы удовлетворить все ваши потребности: http://jupload.sourceforge.net/

Демо-сайт: http://jupload.sourceforge.net/advanced_js_demo.html

Я уверен, что есть много других таких Java-апплеты вне и это, вероятно, не будет слишком сложно катить.

Единственный другой вариант, о котором я могу думать, это приложение для загрузки на рабочем столе.

+0

java немного инвазивный, не так ли? Есть много элементов управления activex и элементов управления загрузкой, которые я бы выбрал, прежде чем устанавливать 100 Мбайт + время выполнения, которое засасывает собственные ресурсы и т. Д. –

+1

Элементы управления Flash-загрузкой также не будут их обрезать, они следуют тем же правилам безопасности, что и основной HTML-файл. и только расширения. Вы правы в области Java, но я так же не решаюсь использовать элементы управления ActiveX и/или реестра. Назовите меня предубежденным, я полагаю, но я бы пошел на независимую от ОС/браузера Java и элемент управления ActiveX, запущенный на IE в любой день: P – brianpeiris

0

Это работает. Здесь мне нужно было убедиться, что пользователь использовал входной файл изображения на пути локального пути клиентов. UrlExists просто проверяет, может ли файл быть загружен в известный путь + имя файла. Мне также нужно было сделать ввод лучше, чем в браузерах. Трюк здесь заключался в том, что я помещал холст с большим количеством работы, чем показано здесь, чтобы замаскировать вход. Установка непрозрачности ввода в 0, Здесь установлено значение 0.5, чтобы вы могли видеть трюк.

<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 fName должен иметь известный путь с именем файла пользователя. Мои комментарии сказали «None» не «известно», –

+0

Не делает то, что задает вопрос, поэтому не работает ... – IamGuest

1

Проще говоря, невозможно сделать такую ​​вещь. Как вы можете видеть, все/большинство ответов согласны с этим утверждением, а также те, которые не поняли вопрос. Извините, но то, что вы пытаетесь сделать, рассматривается большинством браузеров как риск для безопасности.

Смежные вопросы