사용자가 웹 페이지에서 파일을 선택할 때 파일 이름 만 추출 할 수 있기를 원합니다.
str.search 함수를 시도했지만 파일 이름이 c : \ uploads \ ilike.this.file.jpg 와 같은 경우 실패한 것 같습니다 .
확장자없이 파일 이름 만 추출하려면 어떻게해야합니까?
답변
<input type = “file”> 에 업로드 ID가 있다고 가정하면 다음과 같이 트릭을 수행 할 수 있습니다.
var fullPath = document.getElementById('upload').value;
if (fullPath) {
var startIndex = (fullPath.indexOf('\\') >= 0 ? fullPath.lastIndexOf('\\') : fullPath.lastIndexOf('/'));
var filename = fullPath.substring(startIndex);
if (filename.indexOf('\\') === 0 || filename.indexOf('/') === 0) {
filename = filename.substring(1);
}
alert(filename);
}
답변
문자열 ({filepath} / {filename})을 분할하고 파일 이름을 얻으려면 다음과 같이 사용할 수 있습니다.
str.split(/(\\|\/)/g).pop()
“pop 메서드는 배열에서 마지막 요소를 제거하고 해당 값을 호출자에게 반환합니다.”
Mozilla 개발자 네트워크
예:
에서: "/home/user/file.txt".split(/(\\|\/)/g).pop()
당신은 얻는다 : "file.txt"
답변
요즘에는 훨씬 더 간단한 방법이 있습니다.
var fileInput = document.getElementById('upload');
var filename = fileInput.files[0].name;
답변
아주 간단
let file = $("#fileupload")[0].files[0];
file.name
답변
가정 :
<input type="file" name="file1" id="theFile">
JavaScript는 다음과 같습니다.
var fileName = document.getElementById('theFile').files[0].name;
답변
var pieces = str.split('\\');
var filename = pieces[pieces.length-1];
답변
난 당신이, 즉 모든 확장을 제거하려는 가정 /tmp/test/somefile.tar.gz
에somefile
.
정규식을 사용한 직접적인 접근 :
var filename = filepath.match(/^.*?([^\\/.]*)[^\\/]*$/)[1];
정규식 및 배열 작업을 사용한 대체 방법 :
var filename = filepath.split(/[\\/]/g).pop().split('.')[0];