Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 嫩草网站永久入口,国产精品99久久久久久人,日韩一级在线播放

          整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          html5多圖上傳插件 支持拖拽-zyUpload

          插件基于jquery,所以必須引入jquery包.

          先看預覽圖:

          1 引入js和css

          servlet后臺需要的包:

          2 html中放置按鈕3 寫js代碼
          $("#zyupload").zyUpload({ width: "650px", // 寬度 height: "400px", // 寬度 itemWidth: "140px", // 文件項的寬度 itemHeight: "115px", // 文件項的高度 url: "servlet/uploadAction", // 上傳文件的路徑 fileType: ["jpg", "png", "txt", "js"], // 上傳文件的類型 fileSize: 51200000, // 上傳文件的大小 multiple: true, // 是否可以多個文件上傳 dragDrop: true, // 是否可以拖動上傳文件 tailor: true, // 是否可以裁剪圖片 del: true, // 是否可以刪除文件 finishDel: false, // 是否在上傳文件完成后刪除預覽 /* 外部獲得的回調接口 */ onSelect: function(selectFiles, allFiles) { // 選擇文件的回調方法 selectFile:當前選中的文件 allFiles:還沒上傳的全部文件 console.info("當前選擇了以下文件:"); console.info(selectFiles); }, onDelete: function(file, files) { // 刪除一個文件的回調方法 file:當前刪除的文件 files:刪除之后的文件 console.info("當前刪除了此文件:"); console.info(file.name); }, onSuccess: function(file, response) { // 文件上傳成功的回調方法 console.info("此文件上傳成功:"); console.info(file.name); console.info("此文件上傳到服務器地址:"); console.info(response); $("#uploadInf").append("<p>上傳成功,文件地址是:" + response + "</p>"); }, onFailure: function(file, response) { // 文件上傳失敗的回調方法 console.info("此文件上傳失敗:"); console.info(file.name); }, onComplete: function(response) { // 上傳完成的回調方法 console.info("文件上傳完成"); console.info(response); } });
          4 后臺servlet或者Struts2或者SpringMVC都可以.這里使用servlet代碼,使用common第三方包
          public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { DiskFileItemFactory factory= new DiskFileItemFactory(); ServletFileUpload upload = new ServletFileUpload(factory); List<FileItem> list = null ; try { list = upload.parseRequest(request); } catch (FileUploadException e) { e.printStackTrace(); } String id = request.getParameter("id"); TGreens t = null; try { t = service.getTGreens(id); } catch (SQLException e) { e.printStackTrace(); } for(int i=0;i<list.size();i++){ FileItem item =list.get(i); if(item.isFormField()){ }else{ InputStream is = item.getInputStream(); String path = getServletContext().getRealPath("/upload"); //保存到tomcat安裝目錄 String fileName = item.getName(); //文件名 System.out.println("======================="+fileName); String hz = fileName.substring(fileName.lastIndexOf("."));//取后綴 String uuid = UUID.randomUUID().toString(); OutputStream os = new FileOutputStream(path+"http://"+uuid+""+hz); int len =0; byte[] b = new byte[1024]; while((len=is.read(b))>-1){ os.write(b, 0, len); } os.close(); t.setGimg("upload/"+uuid+""+hz); try { service.update(t); //插入數據庫 } catch (SQLException e) { e.printStackTrace(); } PrintWriter out = response.getWriter(); out.print(path+"/"+uuid+hz); out.close(); } } }


          資源下載和demo演示地址:http://demo.sucaihuo.com/1085/程序員都懂的,右鍵查看源代碼即可下載css和js了

          本文中,我們將了解HTML拖放,并借助示例了解其實現.

          拖放是一個非常交互式和用戶友好的概念,它可以通過抓住對象更輕松地將對象移動到其他位置。這允許用戶在元素上單擊并按住鼠標按鈕,將其拖動到其他位置,然后釋放鼠標按鈕以將元素放到該位置。在HTML 5中,拖放更容易編碼,其中的任何元素都是可拖動的。

          拖放事件:有各種拖放事件,其中一些在下面列出:

          • ondrag: 它用于在 HTML 中拖動元素或文本選擇時使用。
          • ondragstart: 它用于調用一個函數 drag(event),該函數指定要拖動的數據。
          • ondragenter: 它用于確定丟棄目標是否接受丟棄。如果要接受丟棄,則必須取消此事件。
          • ondragleave:當鼠標在拖動發生時將元素留在有效放置目標之前時,就會發生這種情況。
          • ondragover: 它指定可以放置拖動數據的位置。
          • ondrop:它指定在拖動操作結束時發生丟棄的位置。
          • ondragend: 當用戶完成拖動元素時,就會發生這種情況。

          拖放 Drag and Drop實現步驟:

          • 步驟1:使對象可拖動 首先將可拖動屬性設置為 true,以使該元素可拖動 <img draggable = “true”>然后,指定拖動元素時應發生的情況。ondragstart 屬性調用一個函數 drag(event),該函數指定要拖動的數據。dataTransfer.setData() 方法設置數據類型和拖動數據的值事件偵聽器 ondragstart 將設置允許的效果(復制、移動、鏈接或某種組合).
          • 步驟2: 放下對象 ondragover 事件指定可以放下拖動數據的位置。默認情況下,不能將數據/元素放在其他元素中。若要允許刪除,它必須阻止元素的默認處理。這是通過調用 event.preventDefault() 方法最后,drop 事件來完成的,它允許執行實際的丟棄

          例1:

          <!DOCTYPE HTML>
          <html>
          <head>
              <style>
              #getData {
                  width: 250px;
                  height: 200px;
                  padding: 10px;
                  border: 1px solid #4f4d4d;
              }
              </style>
              <script>
              function allowDrop(even) {
                  even.preventDefault();
              }
           
              function drag(even) {
                  even.dataTransfer.setData("text", even.target.id);
              }
           
              function drop(even) {
                  even.preventDefault();
                  var fetchData = even.dataTransfer.getData("text");
                  even.target.appendChild(document.getElementById(fetchData));
              }
              </script>
          </head>
           
          <body>
              <h3>Drag the GeekforGeeks image into the rectangle:</h3>
              <div id="getData"
                   ondrop="drop(event)"
                   ondragover="allowDrop(event)">
                </div>
              <br>
              <img id="dragData"
                   src="gfg.png"
                   draggable="true"
                   ondragstart="drag(event)"
                   width="250"
                   height="200">
          </body>
          </html>


          Output:

          Dragging the image into the box

          拖放過程的數據傳遞: 當拖放的整個過程發生時,將使用數據傳輸屬性。它用于保存從源拖放到所需位置的數據。這些是與之關聯的屬性:

          • dataTransfer.setData(format, data): 它用于設置要拖動的數據.
          • dataTransfer.clearData(format): 它用于調用此函數,沒有清除所有數據的參數。使用 format 參數調用它僅刪除該特定數據。
          • dataTransfer.getData(format): 它返回指定格式的數據。如果沒有此類數據,則返回空字符串.
          • dataTransfer.types:此屬性返回在 dragstart 事件中設置的所有格式的數組。
          • dataTransfer.files: 它用于返回要刪除的所有文件。
          • dataTransfer.setDragImage(element, x, y): 它用于將現有圖像顯示為拖動圖像,而不是光標旁邊的默認圖像。坐標指定放置位置。
          • dataTransfer.addElement(element): 它用于添加要繪制的指定元素作為拖動反饋圖像。
          • dataTransfer.effectAllowed(value): 它將告訴瀏覽器只允許用戶使用列出的操作類型。該屬性可以設置為以下值:none、copy、copyLink、copyMove、link、linkMove、move、all 和未初始化。
          • dataTransfer.dropEffect(value): 它用于控制在拖動和拖動事件期間向用戶提供的反饋。當用戶將鼠標懸停在目標元素上時,瀏覽器的光標將指示將要發生的操作類型(例如復制、移動等)。效果可以采用以下值之一:無、復制、鏈接、移動。

          例2:

          <!DOCTYPE HTML>
          <html>
          <head>
          <title>Drag and Drop box</title>
          <script>
          function allowDrop(ev) {
          ev.preventDefault();
          }
          function dragStart(ev) {
          ev.dataTransfer.setData("text", ev.target.id);
          }
          function dragDrop(ev) {
          ev.preventDefault();
          var data = ev.dataTransfer.getData("text");
          ev.target.appendChild(document.getElementById(data));
          }
          </script>
          <style>
          #box {
          margin: auto;
          width: 50%;
          height: 200px;
          border: 3px solid green;
          padding: 10px;
          }
          #box1,
          #box2,
          #box3 {
          float: left;
          margin: 5px;
          padding: 10px;
          }
          #box1 {
          width: 50px;
          height: 50px;
          background-color: #F5B5C5;
          }
          #box2 {
          width: 100px;
          height: 100px;
          background-color: #B5D5F5;
          }
          #box3 {
          width: 150px;
          height: 150px;
          background-color: #BEA7CC;
          }
          p {
          font-size: 20px;
          font-weight: bold;
          text-align: center;
          }
          .gfg {
          font-size: 40px;
          color: #009900;
          font-weight: bold;
          text-align: center;
          }
          </style>
          </head>
          <body>
          <div class="gfg">GeeksforGeeks</div>
          <p>Drag and drop of boxes</p>
          <div id="box">
          <div id="box1" draggable="true"
          ondragstart="dragStart(event)">
          </div>
          <div id="box2" draggable="true"
          ondragstart="dragStart(event)">
          </div>
          <div id="box3" ondrop="dragDrop(event)"
          ondragover="allowDrop(event)">
          </div>
          </div>
          </body>
          </html>
          


          說明:

          • 通過將要拖動的元素的可拖動屬性draggable設置為 true 來開始拖動。
          • 使用 dataTransfer.getData() 方法獲取拖動的數據。此方法將返回在 setData() 方法中設置為相同類型的任何數據。
          • 調用 event.preventDefault() 方法,通過阻止元素的默認處理來允許刪除其他元素中的元素。
          • 該元素存儲在我們附加到放置元素中的變量數據中。

          效果:

          lement Plus 的彈窗組件 ElDialog 在默認情況下是不可拖拽和全屏的。要實現這兩個功能,可以通過以下方式:

          實現拖拽

          1. 使用 v-slots 將 ElDialog 的 title 插槽傳遞到組件中
          2. 在組件中綁定 mousedown 事件監聽, event.preventDefault() 禁止默認事件
          3. 在 document 上監聽 mousemove 事件獲取鼠標移動距離
          4. 利用移動距離計算 ElDialog 的左右位置,使用 refs 修改 style 實現拖拽效果

          實現全屏

          1. 定義 Boolean 類型的 ref 控制是否全屏 fullscreen
          2. 使用 computed 獲取 ElDialog 的寬高
          3. 當全屏時,寬高分別設置為視口寬高
          4. 在模板中綁定 fullscreen 控制樣式切換

          這樣就可以實現 Element Plus 的 ElDialog 組件拖拽和全屏功能。更多 CSS 樣式可以根據需求自定義。

          通過組合 Composition API,可以靈活擴展組件的功能,如拖拽、全屏、自定義關閉邏輯等, making Element Plus 更易用。

          最終實現效果如下:

          <script src="https://lf3-cdn-tos.bytescm.com/obj/cdn-static-resource/tt_player/tt.player.js?v=20160723"></script>

          效果圖:

          演示地址:Vue Shop Vite


          主站蜘蛛池模板: 亚洲AV无码一区东京热久久 | 色婷婷AV一区二区三区浪潮| A国产一区二区免费入口| 亚洲欧洲日韩国产一区二区三区| 日韩一区二区视频在线观看| 久久99热狠狠色精品一区| 国产精品成人一区二区三区| 少妇无码一区二区三区免费| 国产激情无码一区二区三区| 蜜芽亚洲av无码一区二区三区| 色老头在线一区二区三区| 精品少妇一区二区三区视频| 国产激情无码一区二区三区| 日本一区二区三区在线视频| 精品国产天堂综合一区在线| 亚洲AV成人精品一区二区三区 | 国产午夜精品一区二区三区漫画| 国产精品视频免费一区二区三区| 韩国女主播一区二区| 久久精品无码一区二区三区免费 | 无码人妻精品一区二区三区9厂 | 一区二区三区在线观看视频| 欧洲精品码一区二区三区| 无码日韩人妻av一区免费| 国产精品日韩欧美一区二区三区| 国产精品一区在线播放| 亚洲av无码一区二区三区天堂| 国内精品一区二区三区东京| 色一情一乱一伦一区二区三欧美| 欧美日韩综合一区二区三区| 国产成人精品一区二三区 | 精品欧美一区二区在线观看| 国产一区二区三区韩国女主播| 日本一区二三区好的精华液| 国产剧情一区二区| 91麻豆精品国产自产在线观看一区 | 成人精品一区二区三区不卡免费看| 激情综合一区二区三区| 亚洲福利一区二区精品秒拍| 成人区人妻精品一区二区三区 | 中文字幕AV一区二区三区|