Управлять рабочим каталогом для <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>