2

このコードを変更して、条件が複数の選択されたファイル入力から選択されたすべてのファイルのファイル拡張子をチェックするようにする必要があります。このコードは1つだけをチェックします。私はこれを行うことができますか?

var file = document.getElementById('file');
var ext = file.value.substring(file.value.lastIndexOf('.') + 1);

     if(ext!== "mp4" && ext!== "m4v" && ext!== "f4v")  {
         alert('not an accepted file extension');
             return false;
} 

<input id="file" name="uploaded[]" type="file" multiple />
4

5 に答える 5

9

ファイル拡張子が3文字しかないため、文字列の最後の3文字だけを取得する必要があることに注意してください。.split('.')必要に応じて、セグメントの配列を取得し、その配列の最後の要素を選択するために使用できます。

var selection = document.getElementById('file');
for (var i=0; i<selection.files.length; i++) {
    var ext = selection.files[i].name.substr(-3);
    if(ext!== "mp4" && ext!== "m4v" && ext!== "fv4")  {
        alert('not an accepted file extension');
        return false;
    }
} 
于 2013-01-18T00:59:10.737 に答える
1

dom要素の配列内のすべての入力要素を取得するには、を使用しますdocument.getElementsByName('uploaded[]')

たとえば、あなたの場合、次のようになります。

var files = document.getElementsByName('uploaded[]'); 
for (var i = 0, j = files.length; i < j; i++) {
    var file = files[i];
    // do stuff with your file
}
于 2013-01-18T00:53:08.487 に答える
1

javascript some()メソッドによる複数ファイルの検証。

function isVideo(film) {
  const ext = ['.mp4', '.m4v', '.fv4'];
  return ext.some(el => film.endsWith(el));
}

function fileValidation() {
  let files = document.getElementById('file');
  for (let i = 0; i < files.files.length; ++i) {
    let fname = files.files.item(i).name;
    if (!isVideo(fname)) {
      alert("File extension not supported!");
      return false;
    }
  }
}
<input id="file" name="uploaded[]" type="file" multiple onchange="fileValidation()" />

于 2020-08-12T03:51:08.207 に答える
0
  <input name="" id="yourinputfieldis"  onchange="checkFile()"  type="file" multiple = "multiple" accept = "*">    

  <script>
        function checkFile() {   
        var x =  document.getElementById("yourinputfieldis");
        var txt = "";
        document.getElementById("demo").innerHTML = txt;
        if ('files' in x) {
        if (x.files.length == 0) {
        txt = "Select one or more files.";
        } else {
        for (var i = 0; i < x.files.length; i++) {      

        var file = x.files[i];
        if ('name' in file) {

        var ext = file.name.split('.').pop().toLowerCase();
        if($.inArray(ext, ['gif','png','jpg','jpeg','doc','pdf','xlsx']) == -1) {
        txt += "name: " + file.name + "<br>";
        document.getElementById("yourinputfieldis").value = "";

        if ('size' in file) {
        txt += "size: " + file.size + " bytes <br>";
        }
        alert('You are trying to upload files which not allowed ' + "(" + file.name + " is invalid)");

        }

        }
        }
        }
        }
        else {
        if (x.value == "") {
        txt += "Select one or more files.";
        } else {
        txt += "The files property is not supported by your browser!";
        txt  += "<br>The path of the selected file: " + x.value; 
        }
        }     
        }
   </script>
于 2016-07-13T11:25:37.140 に答える
0

このメソッドを使用して、aspxページのファイルタイプを検証します。

<asp:FileUpload ID="fupload" name="fupload" runat="server" Class="form-control multi" accept="doc|docx|pdf|xls|xlsx" Width="270px" />

そして、「MultiFile.js」プラグインを使用して、複数のファイルとアップロードを選択しました。

于 2018-07-02T15:36:35.533 に答える