文件从本地到服务器的功能,其实是为了解决目前浏览器不支持获取本地文件全激陆郑路径。不得已而想到上传到服务器的固定目录,从而方便项目获取文件,进而使程序支持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()
}
文件上传功能是最基本的 所以需要真正的掌握
Java代码
=========文件上传功能================
@Property
private UploadedFile file
@Inject
private ApplicationGlobals globals
//获得绝对路径
String path = globals getServletContext() getRealPath( /images/person/head )
File copied = new File(path + / + file getFileName())
file write(copied) //写入项目
===========js=============
function fileBtn(){
var file=document getElementById( file ) value
//var houzui=kzName(file)
//获取文件后缀名并转成小写
var ext=file substring(file lastIndexOf( )) toLowerCase()
if( file value== ){
alert( 请选择上传的图片 )
return false
}else{
if(ext!= gif &&ext!= jpg &&歼春 ext!= jpeg &&ext!= bmp ) {
alert( 此图片类型不支持:[ +ext+ ] )
return false
氏升耐 }
}
return true
}
//获取后缀名
function kzName(u)
{
var s = / [^ ]+$/ exec(u)
return (s!=null)?s[ ]:null
}
=============file tml================
<div id= fileDiv >
<t:form>
图片上传
<input t:type= upload t:id= file name= file size= />
<input type= submit value= 提 交 onclick= return fileBtn()/>
</t:form>
<! 用来提示信息 >
<div><span id= errormsg ><t:if t:test= errorCode >${errorMsg}</t:if></span></div>
</div>
===============file java===相关代码=============
@Property
private UploadedFile file
@Persist(PersistenceConstants FLASH)
@Property
private String message
@Inject
private Messages messages
@Property
@Persist(value= flash )
private int errorCode
Object onUploadException(FileUploadException ex)
{
message = Upload exception: + ex getMessage()
return this
}
//用来在笑拿页面做提示信息
public String getErrorMsg(){
switch (errorCode) {
case :
return messages get( fileNameMsg )
case :
return messages get( fileSuccess )
default:
break
}
return
lishixinzhi/Article/program/Java/hx/201311/25990String realpath = ServletActionContext.getServletContext().getRealPath("/upload") //获取服务器路径
String[] targetFileName = uploadFileName
for (int i = 0i <upload.lengthi++) {
File target = new File(realpath, targetFileName[i])
FileUtils.copyFile(upload[i], target)
//这是一个伏棚文件复制类copyFile()里面就是IO *** 作,如果你不用这个类也可以自己写一个IO复制文件的类
}
其中private File[] upload// 实际上传返如文件
private String[] uploadContentType// 文件的内容类型
private String[] uploadFileName// 上传文件名
这三个参数必须这样命名,因为文件上传控件默认是封装了这3个参数的,且在action里面他们应有get,漏厅启set方法
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)