public class FileInf {
贛榆ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書合作)期待與您的合作!
public FileInf(){}
public String id="";
public String pid="";
public String pidRoot="";
/** * 表示當前項是否是一個文件夾項。 */
public boolean fdTask=false;
// /// 是否是文件夾中的子文件 /// /summary
public boolean fdChild=false;
/** * 用戶ID。與第三方系統(tǒng)整合使用。 */
public int uid=0;
/** * 文件在本地電腦中的名稱 */
public String nameLoc="";
/** * 文件在服務(wù)器中的名稱。 */
public String nameSvr="";
/** * 文件在本地電腦中的完整路徑。示例:D:\Soft\QQ2012.exe */
public String pathLoc="";
/** * 文件在服務(wù)器中的完整路徑。示例:F:\\ftp\\uer\\md5.exe */
public String pathSvr="";
/** * 文件在服務(wù)器中的相對路徑。示例:/www/web/upload/md5.exe */
public String pathRel="";
/** * 文件MD5 */
public String md5="";
/** * 數(shù)字化的文件長度。以字節(jié)為單位,示例:120125 */
public long lenLoc=0;
/** * 格式化的文件尺寸。示例:10.03MB */
public String sizeLoc="";
/** * 文件續(xù)傳位置。 */
public long offset=0;
/** * 已上傳大小。以字節(jié)為單位 */
public long lenSvr=0;
/** * 已上傳百分比。示例:10% */
public String perSvr="0%";
public boolean complete=false;
public Date PostedTime = new Date();
public boolean deleted=false;
/** * 是否已經(jīng)掃描完畢,提供給大型文件夾使用,大型文件夾上傳完畢后開始掃描。 */
public boolean scaned=false;
}
方式一:事先寫好多個input.在點擊時才顯示。也就是說上傳的最大個數(shù)是寫死了的。
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
方式二:這種方式的動態(tài)多文件上傳是實現(xiàn)了的,很簡單的,不說廢話看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(i0){
var attach = attachname + i ;
if(createInput(attach))
i=i+1;
}
}
function deleteInput(){
if(i1){
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
方式三:動態(tài)多文件上傳,只是在oFileInput.click();這個地方,這樣做就不能上傳這個文件了,因為發(fā)現(xiàn)它在上傳之時就把這個input中的文件置空了。很可能是為了安全著想吧!
另外還有一點就是說,click()只有在ie中才能正常運行。
雖說這種方式最終沒能實現(xiàn)上傳,但還是留下來參考,看看是否有人可以真正實現(xiàn)上傳。
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);
}
//---創(chuàng)建一個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
小文件的話就不需要使用文件流了
需要在config.default.ts(egg.js修改默認配置的文件)指定文件的限制
一般來說超過1mb的文件,在上傳的時候最好以流的形式去處理
egg.js中也提供的這類的插件
同樣的需要修config.default.ts文件,去限制文件的最大長度,如果不限制的話會默認是100kb的,這個要注意
function saveUser() {
? ? ? ? var file = document.getElementById("file").files[0];
? ? ? ? //原生ajax實現(xiàn)文件上傳
? ? ? ? var formData = new FormData();
? ? ? ? if (file) {
? ? ? ? ? ? formData.append("file", file);
? ? ? ? ? ? console.log(file)
? ? ? ? }
? ? ? ? //得到xhr對象
? ? ? ? var xhr = null;
? ? ? ? if (XMLHttpRequest) {
? ? ? ? ? ? xhr = new XMLHttpRequest();
? ? ? ? } else {
? ? ? ? ? ? xhr = new ActiveXObject("Microsoft.XMLHTTP");
? ? ? ? }
? ? ? ? xhr.open("post", "", true);//設(shè)置提交方式,url,異步提交
//? ? ? ? ? ? xhr.setRequestHeader("Content-Type","multipart/form-data");
? ? ? ? xhr.onload = function () {
? ? ? ? ? ? var data = xhr.responseText;? ? //得到返回值
? ? ? ? ? ? console.log(data);
? ? ? ? }
? ? ? ? xhr.send(formData);
? ? }