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

js拖拽上傳文件

發布時間: 2022-06-16 21:18:54

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

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

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

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

B. 使用js向伺服器上傳文件

(1)js無法向網站伺服器傳送文件只能用ftp傳送文件,(2)是動態網站要用js代碼函數與伺服器資料庫代碼建立連接函數。對應資料庫,數據,相應單位,通過指定路徑傳輸倒是制定數據單位。例如照片imag數據單位格式標注照片。通過編輯代碼任意網路客戶端都可上傳到資料庫imag格式單位標注中.相片.

C. 幾種js實現的動態多文件上傳

方式一:事先寫好多個input.在點擊時才顯示。也就是說上傳的最大個數是寫死了的。
html

<p>
<a href='#' onclick='javascript:viewnone(more1)'> 添加附件 </a>
<div id='more1' style='display:none'>
<input type="file" name="attach1" size="50"javascript:viewnone(more2)>
</span>
</div>
<div id='more2' style='display:none'>
<input type="file" name="attach2" size="50"'>
</div>
</p>
js
<SCRIPT language="javascript">
function viewnone(e){
e.style.display=(e.style.display=="none")?"":"none";
}
</script>

方式二:這種方式的動態多文件上傳是實現了的,很簡單的,不說廢話看code
html

<input type="button" name="button" value="添加附件" onclick="addInput()">
<input type="button" name="button" value="刪除附件" onclick="deleteInput()">
<span id="upload"></span>
js

<script type="text/javascript">
var attachname = "attach";
var i=1;
function addInput(){
if(i>0){
var attach = attachname + i ;
if(createInput(attach))
i=i+1;
}

}
function deleteInput(){
if(i>1){
i=i-1;
if(!removeInput())
i=i+1;
}
}

function createInput(nm){
var aElement=document.createElement("input");
aElement.name=nm;
aElement.id=nm;
aElement.type="file";
aElement.size="50";
//aElement.value="thanks";
//aElement.onclick=Function("asdf()");
if(document.getElementById("upload").appendChild(aElement) == null)
return false;
return true;
}

function removeInput(nm){
var aElement = document.getElementById("upload");
if(aElement.removeChild(aElement.lastChild) == null)
return false;
return true;
}

</script>

方式三:動態多文件上傳,只是在oFileInput.click();這個地方,這樣做就不能上傳這個文件了,因為發現它在上傳之時就把這個input中的文件置空了。很可能是為了安全著想吧!
另外還有一點就是說,click()只有在ie中才能正常運行。
雖說這種方式最終沒能實現上傳,但還是留下來參考,看看是否有人可以真正實現上傳。
html

<A href="javascript:newUpload();">添加附件</A>
<TABLE width="100%" border="0" cellpadding="0" cellspacing="1">
<TBODY id="fileList"></TBODY>
</TABLE>
<DIV id="uploadFiles" style="display:block"></DIV>
js

<SCRIPT language="javascript">

//---新建上傳
function newUpload(){
var oFileList = document.getElementById("fileList");
var fileCount = oFileList.childNodes.length + 1;
var oFileInput = newFileInput("upfile_" + fileCount);
if(selectFile(oFileInput)){
addFile(oFileInput);
}
}

//----選擇文件
function selectFile(oFileInput){
var oUploadFiles = document.getElementById("uploadFiles");
oUploadFiles.appendChild(oFileInput);
oFileInput.focus();
oFileInput.click();//不能這樣做,可能是為了安全著想吧!
var fileValue = oFileInput.value;
if(fileValue == ""){
oUploadFiles.removeChild(oFileInput);
return false;
}
else
return true;

}

//---新建一個文件顯示列表
function addFile(oFileInput){
var oFileList = document.getElementById("fileList");
var fileIndex = oFileList.childNodes.length + 1;
var oTR = document.createElement("TR");
var oTD1 = document.createElement("TD");
var oTD2 = document.createElement("TD");

oTR.setAttribute("id","file_" + fileIndex);
oTR.setAttribute("bgcolor","#FFFFFF");
oTD1.setAttribute("width","6%");
oTD2.setAttribute("width","94%");
oTD2.setAttribute("align","left");
oTD2.innerText = oFileInput.value;
oTD1.innerHTML = '<A href="javascript:removeFile('+ fileIndex + ');">刪除</A>';

oTR.appendChild(oTD1);
oTR.appendChild(oTD2);
oFileList.appendChild(oTR);
}

//---移除上傳的文件
function removeFile(fileIndex){
var oFileInput = document.getElementById("upfile_" + fileIndex);
var oTR = document.getElementById("file_" + fileIndex);
uploadFiles.removeChild(oFileInput);
fileList.removeChild(oTR);
}

//---創建一個file input對象並返回
function newFileInput(_name){
var oFileInput = document.createElement("INPUT");
oFileInput.type = "file";
oFileInput.id = _name;
oFileInput.name = _name;
oFileInput.size="50";
//oFileInput.setAttribute("id",_name);
//oFileInput.setAttribute("name",_name);
//oFileInput.outerHTML = '<INPUT type=file id=' + _name + ' name=' + _name + '>';
//alert(oFileInput.outerHTML);
return oFileInput;
}

</SCRIPT>

D. 如何用JS實現文件拖拽事件

在HTML5的pc上面實現了相當多的功能,工作中也用到了拖拉上傳,特地記錄下該功能
在拖動目標上觸發事件 (源元素):
ondragstart - 用戶開始拖動元素時觸發
ondrag - 元素正在拖動時觸發
ondragend - 用戶完成元素拖動後觸發
釋放目標時觸發的事件:
ondragenter - 當被滑鼠拖動的對象進入其容器范圍內時觸發此事件
ondragover - 當某被拖動的對象在另一對象容器范圍內拖動時觸發此事件
ondragleave - 當被滑鼠拖動的對象離開其容器范圍內時觸發此事件
ondrop - 在一個拖動過程中,釋放滑鼠鍵時觸發此事件

E. js 大文件分片上傳處理如何實現

推薦採用webuploader控制項來解決。
關於WebUploader的功能說明:
大文件上傳續傳
支持超大文件上傳(100G+)和續傳,可以關閉瀏覽器,重啟系統後仍然繼續上傳。
開源
提供ASP.NET,JSP,PHP示例和源代碼,其中JSP提供MySQL,Oracle,SQL Server資料庫的配置和示例代碼。
分片、並發
分片與並發結合,將一個大文件分割成多塊,並發上傳,極大地提高大文件的上傳速度。
當網路問題導致傳輸錯誤時,只需要重傳出錯分片,而不是整個文件。另外分片傳輸能夠更加實時的跟蹤上傳進度。
預覽、壓縮
支持常用圖片格式jpg,jpeg,gif,bmp,png預覽與壓縮,節省網路數據傳輸。
解析jpeg中的meta信息,對於各種orientation做了正確的處理,同時壓縮後上傳保留圖片的所有原始meta數據。
多途徑添加文件
支持文件多選,類型過濾,拖拽(文件&文件夾),圖片粘貼功能。上傳本地指定路徑的文件,不需要通過點擊按鈕選擇文件。
粘貼功能主要體現在當有圖片數據在剪切板中時(截屏工具如QQ(Ctrl + ALT + A), 網頁中右擊圖片點擊復制),Ctrl + V便可添加此圖片文件。
HTML5 & FLASH
兼容主流瀏覽器和低版本瀏覽器,介面一致,實現了兩套運行時支持,用戶無需關心內部用了什麼內核。而且支持IE6,IE8瀏覽器。
同時Flash部分沒有做任何UI相關的工作,方便不關心flash的用戶擴展和自定義業務需求。
基於內存映射模式進行IO操作,充分發揮操作系統性能。
MD5秒傳
當文件體積大、量比較多時,支持上傳前做文件md5值驗證,一致則可直接跳過。
如果服務端與前端統一修改演算法,取段md5,可大大提升驗證性能,耗時在20ms左右。
易擴展、可拆分
採用可拆分機制, 將各個功能獨立成了小組件,可自由搭配。
採用AMD規范組織代碼,清晰明了,方便高級玩家擴展。

F. JS-超大文件上傳-如何上傳文件-大文件上傳

可以試試這樣

  1. 前端通過 input type = "file" 接收文件

  2. 然後使用文件的 slice 的方法對文件進行分片

  3. 將每一片提交到後台依次提交到後台,提交時通過 formData 提交,添加幾個欄位

    (1). 這次上傳文件的惟一 id

    (2). 上傳的狀態,是開始,還是上傳中,還是上傳結束

    (3). 分片的位置,比如是第一片,第二片

    (4). 分片的數據

  4. 後端當接收到一個文件 id 的結束標識時,把對應的分片按位置數據拼接起來就行

G. 如何通過js完成多個文件的上傳

HTML5 file組件的新屬性
accept : 如果在file組件中增加這個屬性就可以直接控制上傳的文件類型了,實在是很方便。
multiple:是否允許選擇多個文件
HTML5 頁面代碼修改後

<img width="400" height="250"/><br />
<input type="file" id="pic" name="pic" onchange="printFileInfo()" accept="image/*" multiple="multiple"/>
<input type="button" value="上傳圖片" onclick="uploadFile()" /><br />
<div id="parent">
<div id="son"></div>
</div>

accept 的值可以參閱:IANA MIME 類型(標准 MIME 類型的完整列表),如果使用的是DW開發的話,軟體本身就有提示。
如果選擇了多個文件,可以用JS做循環列印,看看文件的名稱,類型和大小,看演示代碼

function printFileInfo(){

var picFile = document.getElementById("pic");
var files = picFile.files;
for(var i=0; i<files.length; i++){
var file = files[i];
var div = document.createElement("div")
div.innerHTML = "第("+ (i+1) +") 個文件的名字:"+ file.name +
" , 文件類型:"+ file.type +" , 文件大小:"+ file.size
document.body.appendChild( div)
}
}

既然可以循環多文件的話,就可以嘗試多文件上傳了。
1、首先創建 XMLHttpRequest 對象
//這是全局變數。因為是示例,所以就沒有判斷瀏覽器類型,低版本IE這么寫的話會出問題的
var xhr = new XMLHttpRequest()
2、上篇介紹了進度事件(Progress) , 這次實現 progress 和 error 2個事件
error:在請求發生錯誤時觸發。
對應上傳時發生錯誤導致的上傳失敗:uploadFailed()
//上傳失敗
function uploadFailed(evt) {
alert("上傳失敗");
}
progress:在接收相應期間持續不斷觸發。

對應上傳進度方法:onprogress()
/**
* 偵查附件上傳情況 ,這個方法大概0.05-0.1秒執行一次
*/
function onprogress(evt){
var loaded = evt.loaded; //已經上傳大小情況
var tot = evt.total; //附件總大小
var per = Math.floor(100*loaded/tot); //已經上傳的百分比
$("#son").html( per +"%" );
$("#son").css("width" , per +"%");
}

最後就是上傳方法了,注意上面的html代碼中上傳用的方法也需要改成這個uploadFile()方法才能正常使用。

//上傳文件
function uploadFile() {
//將上傳的多個文件放入formData中
var picFileList = $("#pic").get(0).files;
var formData = new FormData();
for(var i=0; i< picFileList.length; i++){
formData.append("file" , picFileList[i] );
}

//監聽事件
xhr.upload.addEventListener("progress", onprogress, false);
xhr.addEventListener("error", uploadFailed, false);//發送文件和表單自定義參數
xhr.open("POST", "upload");
//記得加入上傳數據formData
xhr.send(formData);
}

H. js本地文件怎麼上傳到伺服器ftp

下載一個ftp連接工具,安裝以後點連接,輸入伺服器的ftp連接信息,如ip,用戶名密碼等連接成功後,將文件傳輸到對應的文件目錄下。

I. MyEclipse中如何直接將js拖拽到jsp實現js的導入,解決了嗎

myeclipse中無法通過拖拽的方式把js導入jsp:

通過在jsp上寫<script src="js文件路徑" type="text/javascript"></script>來導入js。通常是在頁面控制項的事件中使用js方法,比如onclick事件,onchange事件。

熱點內容
這個鎖屏密碼是什麼 發布:2024-11-01 12:24:51 瀏覽:91
相機存儲卡排名 發布:2024-11-01 12:24:49 瀏覽:957
androidxml格式化 發布:2024-11-01 12:23:14 瀏覽:164
Vb6編譯是錯誤不知道錯誤代碼 發布:2024-11-01 12:16:23 瀏覽:158
區域網電腦訪問伺服器怎麼提速 發布:2024-11-01 12:14:09 瀏覽:321
美創資料庫 發布:2024-11-01 12:05:45 瀏覽:915
你改愛奇藝密碼什麼意思 發布:2024-11-01 12:04:48 瀏覽:408
矩陣分解python 發布:2024-11-01 11:58:23 瀏覽:367
如何查詢微信支付密碼修改記錄 發布:2024-11-01 11:51:57 瀏覽:206
如何運維gpu伺服器 發布:2024-11-01 11:45:23 瀏覽:366