當前位置:首頁 » 文件管理 » 製作拖拽上傳

製作拖拽上傳

發布時間: 2022-12-20 15:21:08

A. 拖拽上傳和dataTransfer對象操作

場景: 有一個文件上傳div區域,要在這個區域實現文件拖拽到此處可以讀取文件。

參考:https://blog.csdn.net/qq_43523725/article/details/115162416

           https://blog.csdn.net/hjc256/article/details/89021483

被拖拽元素 和 目標元素 的事件:

被拖拽元素:drag-在拖拽的過程中觸發

                      dragend-拖拽完成時

目標元素 :dragenter- 拖放元素進入目標元素時

                   dragover - 拖放元素在目標元素上時

                   dragleave - 拖放元素在目標元素上離開

                   drop- 被拖放的元素在目標元素上同時滑鼠放開觸發的事件(註:需要阻止dragover的默認行為才會觸發drop事件)

let dropBox = this.$refs.dragArea;

dropBox.addEventListener("dragenter", onDrag, false)

dropBox.addEventListener("dragover", onDrag, false)

dropBox.addEventListener("drop", onDrop, false)

function onDrag(e){

    e.preventDefault();

    e.stopPropagation();

}

onDrop(e){

    e.stopPropagation();

     e.preventDefault();

    let dt = e.dataTransfer;

    let selectedFile = dt.files[0];

}

dataTransfer對象

在所有的拖放事件中都提供了一個數據傳輸對象dataTransfer,主要是用於在源對象和目標對象之間傳遞數據。

1、setData(format, data)

    設置拖拽事件中要傳遞的數據,format的參數為數據類型

    該方法向dataTransfer中對象中存入數據,接受兩個參數,第一個表示要存入的數據類型,共有4種:text/plain、text/html、text/xml、text/uri-list

    第二個參數為要存入的數據,例如:event.dataTransfer.setData('text/plain', 'hello world')

2、getData(format)

    獲得拖拽事件中傳遞的數據,format參數為數據類型

    該方法從dataTransfer對象中讀取數據,參數為在setData方法中指定的數據類型,例如:event.dataTransfer.getData('text/plain')

3、clearData()

    該方法清空dataTransfer對象中存儲的數據,參數可選,為數據類型。若為空,則清空所有數據。

3、setDragImage(element,x,y)

    該方法通過img元素來設置拖放圖標

    element表示拖拽時滑鼠下面的圖片(通常是image元素,也可以說canvas元素)

    x、y分別指示相對於圖片的橫向和縱向偏移量,相對應滑鼠指針。

3、files屬性

     返回被拖拽的文件列表,是一個FileList對象,有length屬性,可通過下標訪問

      file對象的例子:

B. WEB頁面如何實現拖拽文件夾上傳

目前用戶要通過Web上傳一個文件是通過 <input type="file /"> 這個標記。具體過程需要在一個很傻的對話框里定位文件夾 -> 在大量的文件里找到目標文件 -> 確定 -> 點「上傳」按鈕。我們能不能把這個步驟簡化,實現拖拽上傳呢?

比如說,
1. 在 資源管理器 里選擇一個圖片
2. 拖拽到一個網頁,比如說一個正在編輯的博客
3. 後台AJXJ自動上傳這個圖片
4. 在正在編輯的博客的當前位置直接插入並顯示圖片。

我想用javascript實現。(跟AJAX一樣,有一點hack的味道。)

原理很簡單。首先用戶拖拽一個圖片到瀏覽器,瀏覽器會自動跳轉到這個圖片。比如說我拖拽 D:\test\1.jpg 到瀏覽器,瀏覽器會跳轉當前頁面到 file:///D:/test/1.jpg。那麼我們要做的就是在瀏覽器跳轉之前:

1. 截獲body.onunload事件,並取消瀏覽器的跳轉
2. 獲知瀏覽器將要跳轉到的頁面
3. 自動填寫 <input type="file" />的地址
4. AJAX後台上傳圖片
5. 把圖片插入當前的正在編輯位置。

發這個帖子的目的,想跟大家探討這個設想的可能性。最後希望得出一個結論:可行,還是不可行。如果可行的話我希望深入探討出一個固定的模式。(像AJAX那樣)

C. 請問什麼是拖拽上傳

拖拽上傳就是打開所需上傳文件所在文件夾以及360雲盤頁面,然後用滑鼠左鍵選擇文件不鬆手拖拽至360雲盤頁面就可以上傳了,這個只是不用一步步去找文件,也沒有什麼特別的便利

D. 文件拖拽上傳怎麼用

一般需要按照提示安裝相應的插件,安裝成功後按照提示將你需要上傳的文件拖動到相應的窗口區域,松開滑鼠即可上傳。

E. 怎樣用html5實現拖拽上傳文件

,首先要判斷拖入的文件是否符合要求,包括圖片類型、大小等,然後獲取本地圖片信息,實現預覽,最後上傳。
$(function(){
...接上部分
var box = document.getElementById('drop_area'); //拖拽區域
box.addEventListener("drop",function(e){
e.preventDefault(); //取消默認瀏覽器拖拽效果
var fileList = e.dataTransfer.files; //獲取文件對象
//檢測是否是拖拽文件到頁面的操作
if(fileList.length == 0){
return false;
}
//檢測文件是不是圖片
if(fileList[0].type.indexOf('image') === -1){
alert("您拖的不是圖片!");
return false;
}

//拖拉圖片到瀏覽器,可以實現預覽功能
var img = window.webkitURL.createObjectURL(fileList[0]);
var filename = fileList[0].name; //圖片名稱
var filesize = Math.floor((fileList[0].size)/1024);
if(filesize>500){
alert("上傳大小不能超過500K.");
return false;
}
var str = "<img src='"+img+"'><p>圖片名稱:"+filename+"</p><p>大小:"+filesize+"KB</p>";
$("#preview").html(str);

//上傳
xhr = new XMLHttpRequest();
xhr.open("post", "upload.php", true);
xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");

var fd = new FormData();
fd.append('mypic', fileList[0]);

xhr.send(fd);
},false);
});

F. 用js怎麼實現簡單拖拽文件上傳

拖拽還是挺不錯的一個頁面效果,我個人認為,其生命力在於可以讓用戶自己做一些操作,所謂自定義。例如:
①瀏覽器標簽順序的拖拽切換
現在基本上所有的選項卡式的瀏覽器都有順序拖拽切換的功能,如下圖:

類似的效果我們可以在QQ精要新聞彈出框中看到,見下圖:

②把內容放在自己喜歡的位置上
這個在桌面軟體上見到的最多,比如視頻播放器,Adobe系列軟體(CS3+)等。

G. 文件拖拽上傳怎麼用

如果你注冊了「網路雲」打開的情況下,在桌面就可以拖拽上傳了,直接把想上傳的東西拖到圖標上即可

熱點內容
php游戲後台 發布:2025-08-18 05:34:05 瀏覽:60
安卓手機怎麼看不了電池健康值 發布:2025-08-18 05:27:48 瀏覽:299
php表格顯示資料庫數據 發布:2025-08-18 05:20:44 瀏覽:720
提供固定ip的雲伺服器 發布:2025-08-18 05:14:25 瀏覽:746
codeblockslinux編譯 發布:2025-08-18 05:14:24 瀏覽:676
編譯程序比較復雜所以執行率高 發布:2025-08-18 05:13:50 瀏覽:172
計算機軟體編程 發布:2025-08-18 05:13:50 瀏覽:699
vcenter搭建域伺服器 發布:2025-08-18 05:08:49 瀏覽:511
serv文件怎麼上傳伺服器 發布:2025-08-18 05:07:16 瀏覽:57
sql欄位非空 發布:2025-08-18 05:05:47 瀏覽:682