理论---jsp使用jspsmartupload组件实现文件上传功能

开始


需要使用的jar包

commons-fileupload-1.2.1.jar

commons-io-1.3.2.jar

jspsmartupload.jar


mysql-connector-java-5.1.42-bin.jar

jstl.jar

standard.jar


文件上传的原理:

文件的上传是基于表单来完成的

表单中的file元素

可以自动生成一个文本框和一个按钮

文本框可以输入本地文件名或路径

点击按钮可以打开一个文件选择框让用户选择本地文件



注意:

文件上传时必须设置表单的enctype属性

将它的值设为multipart/form-data

步骤:

upload.jsp

<form method  ="post"  enctype =“multipart/form-data”    action    ="servlet  url">
     <input type="text" name="userName"></br>
     <input type="file"  name="myFile">       </br>
     <input type="file"  name="myFile2">    </br>
     <input type="submit" value="上传">
</form>


SmartuploadServlet.java

package controller;
import java.io.File;
import java.io.IOException;
import java.sql.SQLException;


import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


import com.jspsmart.upload.SmartUpload;
import com.jspsmart.upload.SmartUploadException;

@WebServlet("/send")
public class SmartUploadServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       


        public SmartUploadServlet() {
           super();
        }
    
        public void destroy() {
           super.destroy();
        }
         public void doGet(HttpServletRequest request, HttpServletResponse response)
    		   throws ServletException, IOException {
    		  //文件上传个数
    		  int count = 0;
    		  //文件上传地址
    		  String filePath = getServletContext().getRealPath("/")+"smartUpload";
    		  
    		  //如果文件夹不存在 则创建这个文件夹
    		  File file = new File(filePath);
    		  if(!file.exists())
    		  {
    		   file.mkdir();
    		  }
    		  //初始化对象
    		  SmartUpload su = new SmartUpload();
    		  su.initialize(getServletConfig(),request,response);
    		  
    		  //设置文件最大容量
    		  su.setMaxFileSize(10*1024*1024);
    		  //设置所有文件最大容量
    		  su.setTotalMaxFileSize(100*1024*1024);
    		  //设置上传文件类型
    		  su.setAllowedFilesList("rar,txt,jpg,bmp,gif");
    		  
                    //设置禁止上传的文件类型
    		   su.setDeniedFilesList("jsp,js,html,css");
    		   //上传文件
    		   su.upload();
    		   System.out.println("userName=" + su.getRequest().getParameter("userName"));
    		   count = su.save(filePath);

                    for (int i = 0; i < su.getFiles().getCount(); i++) {
    		   com.jspsmart.upload.File tempFile = su.getFiles().getFile(i);
    		   System.out.println("-------------------------------------------------");
    		   System.out.println("表单项名称:" + tempFile.getFieldName());
    		   System.out.println("文件名:" + tempFile.getFileName());
    		   System.out.println("文件长度:" + tempFile.getSize());
    		   System.out.println("文件扩展名:" + tempFile.getFileExt());
    		   System.out.println("文件全名:" + tempFile.getFilePathName());
    		   System.out.println("-------------------------------------------------");
    		  }
    		  System.out.println("上传成功!共" + count + "个文件!");
    		   
    		 }

                  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}
	
	 public void init() throws ServletException {
		 }


}






文件上传的细节:

文件上传可以将文件上传到服务器上面的指定目录中,文件上传功能有注意的细节:

1.为保证服务器安全,上传文件应该房放在外界无法直接访问的目录下,比如:WEB-INF目录下

2.为防止文件现象发生,要为上传文件产生一个唯一的文件名。

3.为防止一个目录下面出现太多文件,要是用hash算法打散存储

4.要限制上传文件的最大值

5.要限制上传文件的类型,在收到上传文件名时,判断后缀名是否合法






总结


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值