多文件(圖片,音頻,文檔等)上傳順序問題(簡單記錄)


使用背景:

  測試layui的多圖片上傳中,發現了一個問題。就是說當多圖片上傳后順序無法進行更改,在不修改layui的框架前提下這里有兩種方案:1,按照上傳時間排序,2用js可以滑塊進行拖拽修改。

都不難,這里就簡單記錄一下,話不多說,開擼!(ps:貌似同步上傳可以避免這種問題,沒有具體研究。)

c#按順序獲取文件夾中的文件

  上傳則不變,只需要將獲取文件的方法重寫一下。代碼如圖:

    public class FileComparer : IComparer
    {
        /// <summary>
        /// 文件排序
        /// </summary>
        /// <param name="o1"></param>
        /// <param name="o2"></param>
        /// <returns></returns>
        int IComparer.Compare(object o1, object o2)
        {
            FileInfo fi1 = o1 as FileInfo;
            FileInfo fi2 = o2 as FileInfo;
            return fi1.CreationTime.CompareTo(fi2.CreationTime);
        }
    }
        public static FileInfo[] GetFilesList(string path)
        {

            var di = new DirectoryInfo(path);//文件夾所在目錄
            var fc = new FileComparer();

            FileInfo[] fileList = di.GetFiles();
            Array.Sort(fileList, fc);//按文件創建時間排正序


            return fileList;


        }

目前是按照時間排序,可更改為大小,類型,等具體看需求。

 

js滑塊的運用

  此方式,是利用了文件名稱排序的規則,則利用拖拽修改順序后,進行重新命名。所使用的ui框架是:https://jqueryui.com/sortable/#display-grid,效果如下:

 

 

 

 

 

代碼也很簡單直接源代碼就可以運行。

<!DOCTYPE>
<html lang="zh-cn">

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>拖拽排序</title>
    <style>
        .sortable-ghost {
            opacity: 0.4;
            background-color: #F4E2C9;
        }

        .block__list li {
            cursor: pointer;

        }
    </style>
</head>
<!--      <link href="app.css" rel="stylesheet" type="text/css"/>
      -->
<!-- script src="./Sortable.js"></script> -->
<script src="https://cdn.bootcss.com/Sortable/1.8.3/Sortable.js"></script>

<body>
    <button id="btn">關閉拖拽</button>
    <ul id="foo" class="block__list block__list_words">
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
        <li>6</li>
        <li>7</li>
        <li>8</li>
    </ul>
    <script>
       var sortable = new Sortable(document.getElementById('foo'), {
            animation: 150, //動畫參數
            disabled: false,//開關狀態
            onAdd: function (evt) {   //拖拽時候添加有新的節點的時候發生該事件
                console.log('onAdd.foo:', [evt.item, evt.from]);
            },
            onUpdate: function (evt) {  //拖拽更新節點位置發生該事件
                console.log('onUpdate.foo:', [evt.item, evt.from]);
            },
            onRemove: function (evt) {   //刪除拖拽節點的時候促發該事件
                console.log('onRemove.foo:', [evt.item, evt.from]);
            },
            onStart: function (evt) {  //開始拖拽出發該函數
                console.log('onStart.foo:', [evt.item, evt.from]);
            },
            onSort: function (evt) {  //發生排序發生該事件
                console.log('onSort.foo:', [evt.item, evt.from]);
            },
            onEnd: function (evt) { //拖拽完畢之后發生該事件
                console.log('onEnd.foo:', [evt.item, evt.from]);
            }
        });
        var btn = document.getElementById('btn')
        btn.onclick = function () {
            console.log('123')
            console.log(sortable)
            var state = sortable.option("disabled"); // get
            console.log(state)
            sortable.option("disabled", !state); // set
        }
    </script>
</body>

</html>

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM