Я новичок в JavaScript.
У меня есть это:
HTML:
<form>
<t:inputFileUpload required="true" id="upload" onchange="uploadOnChange()" />
<input id="filename" type="hidden" />
<h:commandButton class="btn btn-primary" value="Upload"
action="#{controller.upload}" />
</form>
JavaScript:
<script>
function uploadOnChange() {
document.getElementById('upload').onchange = name;
var filename = name;
var lastIndex = filename.lastIndexOf("\\");
if (lastIndex >= 0) {
filename = filename.substring(lastIndex + 1);
document.getElementById('filename').value = filename;
}
</script>
Все, что я хочу сделать, это получить через inputFileUpload, просмотреть мой каталог, имя файла, которое я выбрал, и передать это имя в виде строки в контроллер jsf.
Кто-нибудь может мне помочь?
РЕДАКТИРОВАТЬ:
Если я добавлю в свою форму enctype="multipart/form-data
кажется, что метод контроллера" upload "ничего не делает.
Предполагая, что <t:inputFileUpload>
имеет атрибут value
, я бы изменил код на что-то вроде этого:
function uploadOnChange() {
var filename = document.getElementById('upload').value;
var lastIndex = filename.lastIndexOf("\\");
if (lastIndex >= 0) {
filename = filename.substring(lastIndex + 1);
document.getElementById('filename').value = filename;
}
console.log('Value hidden input: ' + document.getElementById('filename').value);
}
<input type="file" required="true" id="upload" onchange="uploadOnChange()" />
<input id="filename" type="hidden" />
inputFileUpload
каким-либо образом.