javascript - 从input type = file获取文件名和扩展名

Che*_*red 8 html javascript forms file-upload input

我有一个文件上传输入,当我单击浏览按钮并选择文件时,我希望文件名和扩展名出现在两个输入文本框中(请参阅代码示例).它与扩展名一起正常工作,但文件名也显示了路径,它给出了伪路径警告.我理解为什么,但是这样做的好方法是将文件名放入该框中.我不需要这条路.

function getoutput(){
    outputfile.value=inputfile.value.split('.')[0];
    extension.value=inputfile.value.split('.')[1];}
Run Code Online (Sandbox Code Playgroud)
    <input id='inputfile' type='file' name='inputfile' onChange='getoutput()'><br>
    Output Filename <input id='outputfile' type='text' name='outputfile'><br>
    Extension <input id='extension' type='text' name='extension'>
Run Code Online (Sandbox Code Playgroud)

小智 15

这有点旧帖...仅供参考

   var files = event.target.files
   var filename = files[0].name
   var extension = files[0].type
Run Code Online (Sandbox Code Playgroud)

在类型中你会找到例如扩展名:如果是jpeg图像那么,

extension = image/jpeg
Run Code Online (Sandbox Code Playgroud)

或者如果是pdf那么,

extension = application/pdf
Run Code Online (Sandbox Code Playgroud)

要获得确切的值,请执行extension.replace(/// g,'').你会得到价值.

  • 这非常简洁,但带有一个“但是”...`type` 属性可能返回空字符串。例如,如果您作为客户端上传 docx 文件,但客户端计算机上没有安装 MS Word,则浏览器会在“type”上返回空字符串。后备机制是必要的。尽管在每个浏览器中,其行为有所不同。我在最新/最近的 Chrome 版本的“type”上看到了这个空字符串结果,并且我的开发计算机上没有安装 MS Word。 (5认同)
  • 如果我上传 *.docx 文件,它会像这样返回。`application/vnd.openxmlformats-officedocument.wordprocessingml.document` 如何仅获取扩展名“docx”? (2认同)

Jun*_* L. 14

使用lastIndexOf获取最后一个\作为索引,并使用substr获取剩余的字符串(从的最后一个索引开始)\

function getFile(filePath) {
        return filePath.substr(filePath.lastIndexOf('\\') + 1).split('.')[0];
    }

    function getoutput() {
        outputfile.value = getFile(inputfile.value);
        extension.value = inputfile.value.split('.')[1];
    }
Run Code Online (Sandbox Code Playgroud)
<input id='inputfile' type='file' name='inputfile' onChange='getoutput()'><br>
    Output Filename <input id='outputfile' type='text' name='outputfile'><br>
    Extension <input id='extension' type='text' name='extension'>
Run Code Online (Sandbox Code Playgroud)

更新

function getoutput(event) {

  if (!event || !event.target || !event.target.files || event.target.files.length === 0) {
    return;
  }

  const name = event.target.files[0].name;
  const lastDot = name.lastIndexOf('.');

  const fileName = name.substring(0, lastDot);
  const ext = name.substring(lastDot + 1);

  outputfile.value = fileName;
  extension.value = ext;
  
}
Run Code Online (Sandbox Code Playgroud)
<input id='inputfile' type='file' name='inputfile' onChange='getoutput(event)'><br>
  Output Filename <input id='outputfile' type='text' name='outputfile'><br>
  Extension <input id='extension' type='text' name='extension'>
Run Code Online (Sandbox Code Playgroud)


小智 8

var filePath = $("#inputFile").val(); 
var file_ext = filePath.substr(filePath.lastIndexOf('.')+1,filePath.length);
console.log("File Extension ->-> "+file_ext);
Run Code Online (Sandbox Code Playgroud)

如果文件名中有点,它将起作用。