java web文件上传功能实现

鉴于很多刚毕业做web的同学,可能需要做一些譬如excel,pdf之类文档上传的功能,现在我们就来复习一下struts2如何将单个文件上传至服务器。

代码写的比较简单,适合刚入手的同学。

准备工作:上传文件需要的jar包 如图

java web文件上传功能实现_第1张图片

jsp代码如下:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>



    
        演示struts2  
     

  
    
       
enctype="multipart/form-data">
成功!


java代码如下:

package Action;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;

import org.apache.struts2.ServletActionContext;

public class Testfile {
	//file属性用来封装上传的文件
	private File file;
	//fileName属性用来封装上传的文件名
	private String fileFileName;
	//fileContentType属性用来封装上传文件的类型
	private String fileContentType;
	
	public String execute() throws Exception{
		InputStream in = new FileInputStream(file);
		String uploadPath =null;
		try {
			uploadPath = ServletActionContext.getServletContext().getRealPath("/upload");
		} catch (Exception e) {
			System.out.println("文件路径无法找到!");
			return "error";
		}
		//设置目标文件
		System.out.println(uploadPath);
		File toFile = new File(uploadPath,this.getFileFileName());
		OutputStream out = new FileOutputStream(toFile);
		//设置缓存
		byte[] buffer = new byte[1024];
		
		int length = 0;
		
		//读取file文件输出到toFile文件中
		while((length=in.read(buffer))>0){
			out.write(buffer, 0, length);
		}
		
		System.out.println("上传文件名"+fileFileName);
		System.out.println("上传文件类型"+fileContentType);
		
		//关闭输入流
		in.close();
		
		//关闭输出流
		out.close();
		
		return "success";
		
		
		
		
	}

	public File getFile() {
		return file;
	}

	public void setFile(File file) {
		this.file = file;
	}

	
	public String getFileFileName() {
		return fileFileName;
	}

	public void setFileFileName(String fileFileName) {
		this.fileFileName = fileFileName;
	}

	public String getFileContentType() {
		return fileContentType;
	}

	public void setFileContentType(String fileContentType) {
		this.fileContentType = fileContentType;
	}
	
}


我的struts2配置文件如下

  
  
  

      
          
            /error.jsp  
            /success.jsp  
          
        
        	/success.jsp
        
     
 


最后在我电脑上的成功上传文件至tomcat服务器下

控制台输出如下:

java web文件上传功能实现_第2张图片

需要注意的是:jsp中form表单类型enctype用multipart/form-data,这样可以把文件中的数据作为流式数据上传,不管是什么文件类型,均可上传。还有struts2中标红的需要配置,Struts2中的struts.multipart.saveDir主要是用来设置上传文件的临时目录,不配置文件上传时会报错。

好啦,下周我会讲讲登录页面验证码的实现,本人也是刚入职不久的菜鸟,需要学习的知识也很多,望大家多多指教。

java web交流学习群:532226495

你可能感兴趣的:(java)