使用php filemtime()和angularjs来获取文件的最新修改时间时出错

时间:2015-03-11 23:17:02

标签: php angularjs

我正在使用AngularJS并尝试使用php的filemtime()函数打印文件上传到服务器的日期,但是我收到错误。

以下是我在我的一个表格单元格中尝试使用的内容:

<td><?php $file = 'images/icons/{{icon.fileName}}.png'; echo date('m/d/Y', filemtime($file)); ?></td>

不幸的是,当您查看该页面时,我收到以下PHP错误:

Warning: filemtime(): stat failed for images/icons/air_balloon.png in /home/ogmda/public_html/symbols/symbols.php on line 105
12/31/1969

我的直播demo is here

有人可以帮助我走上正确的道路来解决这个问题吗?感谢。

1 个答案:

答案 0 :(得分:0)

这里有一个经典的前端与后端问题。在开始在Angular的前端开始使用它之前,你必须从服务器获得所需的一切(除非你再做一个ajax请求来获取更多数据)。

因此,我建议您使用icon对象发送更多信息。

您的页面中有此脚本,该脚本将转到MOCK_DATA2.json以获取信息。该文件不仅需要包含icon.fileName,还需要包含icon.filemtime。您可以手动或使用服务器端脚本来添加或生成它。

var iconApp = angular.module('iconApp', ['ngAnimate']);

iconApp.controller('ListController', ['$scope', '$http', function($scope, $http){
    $http.get('js/MOCK_DATA2.json').success(function(data){
        $scope.iconData = data;
        $scope.orderProp = "name";
    });
}]);

一旦将这些内容添加到iconData,您就可以更改您的网页&nbsp; html:

<tr ng-animate="'animate'" ng-repeat="icon in filtered = (iconData | filter: query | orderBy: orderProp)">
                        <td><img src="images/icons/{{icon.fileName}}.png"></td>
                        <td>{{icon.name}}</td>
                        <td>{{icon.group}}</td>
                        <td>{{icon.description | limitTo:50:begin}}</td>
                        <td>{{icon.filemtime}}</td>

                    </tr>

PHP选项

如果您没有选择向文件添加更多信息,那么您可以使用php json_decode()加载它,循环图标并获取每个文件的时间。然后将每个数据添加到您的数据json_encode(),然后以javascript可以看到的方式将其打印到页面的html:

var iconData = <?php print json_encode($iconData); ?>;

还有一点工作,然后您将图标数据粘贴在页面的html中,但可能更容易管理。

最终选项

还有另一种选择,但这需要每个图像额外的ajax请求才能尝试获取文件修改时间。见这里:

Is it possible with javascript to find file's last modified time?