昨天使用SmartUpload組件上傳文件,代碼很簡單:
smartupload_demo01.html
<html>
<head><title>smartupload_demo01.html</title></head>
<body>
<form action="smartupload_demo01.jsp" method="post" enctype="multipart/form-data">
請選擇文件:<input type="file" name="pic">
<input type="submit" value="上傳">
</form>
</body>
</html>
smartupload_demo01.jsp
<%@page contentType="text/html" pageEncoding="GBK"%>
<%@page import="com.jspsmart.upload.*"%>
<html>
<head><title>smartupload_demo01.jsp</title></head>
<body>
<%
int count = 0;
SmartUpload smart = new SmartUpload(); // 實例化SmartUpload對象
smart.initialize(pageContext); // 初始化上傳操作
smart.upload(); // 準備上傳
try {
count = smart.save("upload"); // 將上傳的文件保存在upload文件夾中
%>
<%=count%> files upload.
<%
}catch(Exception e) {
e.printStackTrace();
}
%>
</body>
</html>
剛開始我以爲不需要使用request.getParameter()獲取表單項的值,就自以爲是的在<input type="file">裏沒有寫name屬性,結果沒有任何錯誤提示,可就是無法上傳文件,後來在網上查了下資料才發現。沒有name屬性servlet是接受不到表單信息的,SmartUpload中的upload()方法也需要name屬性來獲取參數的。所以這個name屬性是必不可少的。
另外:在設置<form>標籤中的enctype屬性時一定不要將字母打錯,計算機時很嚴謹的,打錯一個字母都無法上傳。我就是將form-data打成form-date結果無法上傳,系統也不報錯,找了很久才發現這個小錯誤。:-(
以上就是我在使用SmartUpload上傳文件時踩過的坑,記錄在這裏提醒自己,也希望能幫助到需要的人。