一直以來上傳檔案都是用form表單來上傳的,在專案中也有過ajax非同步無重新整理的上傳檔案,因為記錄下來ajax如何檔案。
本次上傳檔案是用jsp作為前台介面,servlet為後台,沒有使用框架處理,上傳檔案用的ajaxfileupload.js封裝的工具類
上傳檔案需要commons-fileupload-1.3.1.jar,commons-io-2.2.jar。
處理excel使用的是poi包 poi-3.9.jar,poi-ooxml-3.9.jar,poi-ooxml-schemas-3.9.jar,xmlbeans-2.3.0.jar,dom4j-1.6.1.jar,
如果excel字尾是xls的話就不用加xmlbeans-2.3.0.jar,dom4j-1.6.1.jar這個兩個jar。這兩個jar主要解決比較老版的excel字尾為xlsx的
前台介面引用以下js檔案
這是每次改變控制項內容的時候觸發上傳,但是html的file控制項存在乙個bug,觸發一次change事件後無法再繼續觸發下一次,所以特意在complete函式裡面替換控制項,在重新繫結change事件就可以了。
html**
style="font-size: 0;opacity: 0;width: 100px;height: 100px;position: absolute;
left: 0;top: 0;" />
選擇檔案
編號姓名
年齡前台介面很簡單沒有做什麼美化,這次主要是講檔案上傳導入資料功能。
//配置上傳引數
diskfileitemfactory factory = new diskfileitemfactory();
//設定記憶體臨界值,上傳檔案若超出後這個值,則產生臨時檔案存放臨時目錄中
factory.setsizethreshold(1024 * 1024 * 3);
//設定臨時目錄
factory.setrepository(new file(temp_file_path));
servletfileupload upload = new servletfileupload(factory);
upload.setheaderencoding("utf-8");
jsonobject jsonobj = new jsonobject();
try else
jsonobj.put("data", resultlist);
jsonobj.put("retcode","200");
jsonobj.put("retmsg","上傳成功!");}}
} catch (exception e)
out.write(jsonobj.tostring());
out.flush();
out.close();
}public static integer getallrows(workbook wb, integer numsheet)
return count;
}public static listreadexcel(workbook wb, integer numsheet, int cellcount)
string str = new string[cellcount];
if (row.getrownum() != 0)
str[cellnum] = getcellvalue(cell);
}list.add(str);}}
}return list;
}public static string getcellvalue(cell cell)
switch (cell.getcelltype()) else
} catch (exception e)
break;
case hssfcell.cell_type_string:
strvalue = cell.getstringcellvalue();
break;
case hssfcell.cell_type_boolean:
strvalue = string.valueof(cell.getbooleancellvalue());
break;
case hssfcell.cell_type_formula:
int resulttype=cell.getcachedformularesulttype();
if (resulttype==0) else
break;
case hssfcell.cell_type_error:
strvalue = string.valueof(cell.geterrorcellvalue());
break;
}return strvalue.trim();
}public static string formatdatetostring(date date)
return datestr;}
通過ajax上傳excel
html 上 傳 匯入格式 xls js 匯入檔案 function importexp success function responsestr else controller service 寫入 param is public string writeexeldata inputstream ...
ajax 檔案上傳
用ajax實現檔案的非同步上傳功能是很常用的。html定義檔案上傳標籤 type file id myfile class default multiple multiple multiple屬性是聲音這個檔案上傳標籤可以一次性上傳多個檔案js上傳檔案驗證 這裡我假設上傳的是excel檔案 注意只能...
Ajax上傳檔案
使用ajax上傳檔案的話,就需要用到fromdate,fromdate,可以把form中所有表單元素的name與value組成乙個querystring,提交到後台。在使用ajax提交時,使用formdata物件可以減少拼接querystring的工作量。processdata false cont...