Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在JavaScript中重新排序上载文件_Javascript_Jquery_Html_Angularjs_Angular Ui Sortable - Fatal编程技术网

如何在JavaScript中重新排序上载文件

如何在JavaScript中重新排序上载文件,javascript,jquery,html,angularjs,angular-ui-sortable,Javascript,Jquery,Html,Angularjs,Angular Ui Sortable,我正在使用AngularJS和ui sortable对通过HTML上传的图像进行重新排序,使用以下输入: <input name="userfile[]" type="file" id="userfile" ng-if="charSelected" onchange="angular.element(this).scope().filesLoaded(this.files)" multiple> 但是document.getElementById返回的对象似乎是不可变的,因为con

我正在使用AngularJS和
ui sortable
对通过HTML上传的图像进行重新排序,使用以下输入:

<input name="userfile[]" type="file" id="userfile" ng-if="charSelected" onchange="angular.element(this).scope().filesLoaded(this.files)" multiple>
但是document.getElementById返回的对象似乎是不可变的,因为console.log即使在我将文件[originalPos]与文件[newPos]交换之后也会返回相同的名称


如何更改用户要上载的文件的顺序?

出于安全原因,无法设置文件属性。我懂了。所以我可能需要做一些事情,比如创建一个索引数组来传递POST数据,这样服务器端就可以处理它了?好吧,从javascript访问文件数组(我相信)只会返回文件名的字符串。我不认为它会把文件还给你。你最好的办法是按原样发送,然后在服务器端执行必要的排序/洗牌编辑:误读你的评论。是的,这就是解决办法
<table>
    <tr><span ng-if="charSelected && type == 'Image'">Preview (Drag to Reorder)</span></tr>
    <tr ng-model="images" ui-sortable="reorderFiles">
        <td ng-repeat="image in images track by $index" ng-if="charSelected && type == 'Image'"><img ng-src="{{image}}" /></td>
    </tr>
</table>
// Sortable change event
$scope.reorderFiles = {
    update: function(e, ui) {
        var originalPos = ui.item.index();
        var newPos = ui.item.sortable.dropindex;
        // Swap the files
        var t1 = document.getElementById('userfile').files[originalPos];
        console.log("orig: " + document.getElementById('userfile').files[originalPos].name);
        document.getElementById('userfile').files[originalPos] = document.getElementById('userfile').files[newPos];
        document.getElementById('userfile').files[newPos] = t1;
        console.log("new: " + document.getElementById('userfile').files[originalPos].name);
    }
}