Управлять рабочим каталогом для <input type="file">?

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

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

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

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

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

Ответы

Ответ 1

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

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

Ответ 2

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

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

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

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

Ответ 3

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

Ответ 4

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

Ответ 5

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

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

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

HKCU\Software\Microsoft\Internet Explorer\DownloadDirectory

Ответ 6

Это работает. Здесь мне нужно было убедиться, что пользователь использовал файл входного изображения на пути локального пути клиентов. 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>