2017-09-25 49 views
-1

这是我的小问题,当我试图从我输入的type =“file”中获取值时。获取值输入文件为空

这才是我应该怎么做的:

<tr ng-repeat="imagenDatos in tableImagenesPunto | filter: busquedaDatosPunto " > 
    <td>PNG</td> 
    <td>{{imagenDatos.id_puntoEmpresa}}</td> 
    <td>{{imagenDatos.nombre_punto}}</td> 
    <td>{{imagenDatos.direccion_punto}}</td> 
    <td> 
    <input type="file" name="uploadFile[]" id="inputFileServer" accept="image/png" ng-click="inputChange()" /> 
    </td> 
    <td>{{imagenDatos.ruta_punto}}</td> 
    <td> 
    <button type="submit" class="btn btn-info btn-sm " value="Upload3" ng-click="uploadFile()" id="btnSubirArchivo" role="button" data-original-title="Subir Logo"> 
         <span class="glyphicon glyphicon-open-file" aria-hidden="true"></span> 
    </button> 
    </td> 
</tr> 

而且这是在JS

$scope.uploadFile = function() 
{ 
var file = document.getElementById('inputFileServer').files[0]; 
console.log(file); 
} 

结果是“不确定的”,我怎么能知道什么是错?

+0

以及你什么时候打电话给你的代码? – epascarello

+0

您是否选择了带有文件输入的文件?你期望在控制台上显示什么值? – Quentin

+0

@quentin是的,我选择了文件,但它需要作为“没有选择” – jecorrales

回答

0

在用户上传文件之前,您可能正在读的是files。尝试在访问files[0]之前验证files.length。这将防止错误。

在下面的代码片段中,我设置了一个setInterval,它打印每秒钟的文件数量。您可以看到,一旦用户上传文件,计数将被更新。

在您的应用程序中,您可以听输入的change事件,然后基于文件长度验证,您可以访问它。

var files = document.getElementById('inputFileServer').files; 
 

 
setInterval(function() { 
 
    files = document.getElementById('inputFileServer').files; 
 
    console.log("Number of files: ", files.length); 
 
}, 1000); 
 

 
function inputChange() { 
 
    alert("Input changes"); 
 
}
<input type="file" name="fileToUpload[]" id="inputFileServer" accept="image/png" onchange="inputChange()" />

+0

以及演示不会做太多... – epascarello

+0

@epascarello我想显示文件长度验证。另外,我只是添加了更改事件,以便他们可以在选择文件后读取文件。还有什么你能想到的? – Nisarg

+0

结果是文件数量:0, – jecorrales