Javascript-파일 입력 컨트롤에서 파일 이름을 추출하는 방법 때 파일 이름 만 추출 할

사용자가 웹 페이지에서 파일을 선택할 때 파일 이름 만 추출 할 수 있기를 원합니다.

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.gzsomefile .

정규식을 사용한 직접적인 접근 :

var filename = filepath.match(/^.*?([^\\/.]*)[^\\/]*$/)[1];

정규식 및 배열 작업을 사용한 대체 방법 :

var filename = filepath.split(/[\\/]/g).pop().split('.')[0];