新网创想网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
Java代码实现文件上传
创新互联是一家专注于成都网站制作、做网站、外贸营销网站建设与策划设计,五龙口网站建设哪家好?创新互联做网站,专注于网站建设十多年,网设计领域的专业建站公司;建站业务涵盖:五龙口等地区。五龙口做网站价格咨询:18982081108
FormFile file=manform.getFile();
String newfileName = null;
String newpathname=null;
String fileAddre="/numUp";
try {
InputStream stream = file.getInputStream();// 把文件读入
String filePath = request.getRealPath(fileAddre);//取系统当前路径
File file1 = new File(filePath);//添加了自动创建目录的功能
((File) file1).mkdir();
newfileName = System.currentTimeMillis()
+ file.getFileName().substring(
file.getFileName().lastIndexOf('.'));
ByteArrayOutputStream baos = new ByteArrayOutputStream();
OutputStream bos = new FileOutputStream(filePath + "/"
+ newfileName);
newpathname=filePath+"/"+newfileName;
System.out.println(newpathname);
// 建立一个上传文件的输出流
System.out.println(filePath+"/"+file.getFileName());
int bytesRead = 0;
byte[] buffer = new byte[8192];
while ((bytesRead = stream.read(buffer, 0, 8192)) != -1) {
bos.write(buffer, 0, bytesRead);// 将文件写入服务器
}
bos.close();
stream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
文件从本地到服务器的功能,其实是为了解决目前浏览器不支持获取本地文件全路径。不得已而想到上传到服务器的固定目录,从而方便项目获取文件,进而使程序支持EXCEL批量导入数据。
java中文件上传到服务器的指定路径的代码:
在前台界面中输入:
form method="post" enctype="multipart/form-data" action="../manage/excelImport.do"
请选文件:input type="file" name="excelFile"
input type="submit" value="导入" onclick="return impExcel();"/
/form
action中获取前台传来数据并保存
/**
* excel 导入文件
* @return
* @throws IOException
*/
@RequestMapping("/usermanager/excelImport.do")
public String excelImport(
String filePath,
MultipartFile excelFile,HttpServletRequest request) throws IOException{
log.info("action:{} Method:{} start","usermanager","excelImport" );
if (excelFile != null){
String filename=excelFile.getOriginalFilename();
String a=request.getRealPath("u/cms/www/201509");
SaveFileFromInputStream(excelFile.getInputStream(),request.getRealPath("u/cms/www/201509"),filename);//保存到服务器的路径
}
log.info("action:{} Method:{} end","usermanager","excelImport" );
return "";
}
/**
* 将MultipartFile转化为file并保存到服务器上的某地
*/
public void SaveFileFromInputStream(InputStream stream,String path,String savefile) throws IOException
{
FileOutputStream fs=new FileOutputStream( path + "/"+ savefile);
System.out.println("------------"+path + "/"+ savefile);
byte[] buffer =new byte[1024*1024];
int bytesum = 0;
int byteread = 0;
while ((byteread=stream.read(buffer))!=-1)
{
bytesum+=byteread;
fs.write(buffer,0,byteread);
fs.flush();
}
fs.close();
stream.close();
}
private static DiskFileItemFactory factory; //获得磁盘文件条目工厂
private static ServletFileUpload upload; //文件上传处理类
factory = new DiskFileItemFactory(); //获得磁盘文件条目工厂
factory.setRepository(new File(config.getCache())); //创建缓存工厂
factory.setSizeThreshold(1024*1024*2) ; //设置缓存区的大小
upload = new ServletFileUpload(factory); //高水平的API文件上传处理
upload.setSizeMax(10 * 1024 * 1024); //设置文件上传的最大值
upload.setFileSizeMax(2* 1024 * 1024); //设置文件上传的最大值
ListFileItem list = upload.parseRequest(request);
for(FileItem item : list){
String fieldName = item.getFieldName(); //获取表单的属性名字
String fileName = item.getName() ; //获取文件名
if(item.isFormField()){ //如果获取的 表单信息是普通的 文本 信息
}else{
File file = new File("d://test.txt");
item.write(file);
}
}