String[] targetFileName = uploadFileName;
for (int i = 0; i < uploadlength; i++) {
File target = new File(realpath, targetFileName[i]);
FileUtilscopyFile(upload[i], target);
//这是一个文件复制类copyFile()里面就是IO *** 作,如果你不用这个类也可以自己写一个IO复制文件的类
}
其中private File[] upload;// 实际上传文件
private String[] uploadContentType; // 文件的内容类型
private String[] uploadFileName; // 上传文件名
这三个参数必须这样命名,因为文件上传控件默认是封装了这3个参数的,且在action里面他们应有get,set方法
文件从本地到服务器的功能,其实是为了解决目前浏览器不支持获取本地文件全路径。不得已而想到上传到服务器的固定目录,从而方便项目获取文件,进而使程序支持EXCEL批量导入数据。
java中文件上传到服务器的指定路径的代码:
在前台界面中输入:
<form method="post" enctype="multipart/form-data" action="/manage/excelImportdo">
请选文件:<input type="file" name="excelFile">
<input type="submit" value="导入" onclick="return impExcel();"/>
</form>
action中获取前台传来数据并保存
/
excel 导入文件
@return
@throws IOException
/
@RequestMapping("/usermanager/excelImportdo")
public String excelImport(
String filePath,
MultipartFile excelFile,>
loginfo("<<<<<<action:{} Method:{} start>>>>>>","usermanager","excelImport" );
if (excelFile != null){
String filename=excelFilegetOriginalFilename();
String a=requestgetRealPath("u/cms/>
SaveFileFromInputStream(excelFilegetInputStream(),requestgetRealPath("u/cms/>
}
loginfo("<<<<<<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);
Systemoutprintln("------------"+path + "/"+ savefile);
byte[] buffer =new byte[10241024];
int bytesum = 0;
int byteread = 0;
while ((byteread=streamread(buffer))!=-1)
{
bytesum+=byteread;
fswrite(buffer,0,byteread);
fsflush();
}
fsclose();
streamclose();
}
Java中可以根据平台来判断路径的分隔符的\x0d\通常使用\\或/,也可以使用Fileseparator一般我在写路径时经常用/\x0d\\x0d\5取得服务器相对路径\x0d\SystemgetProperty("userdir")\x0d\例如:E:\apache-tomcat-5516\apache-tomcat-5516\bin\x0d\可以百度一下Java路径路径分隔符String extend = workergetPhoto()substring(workergetPhoto()lastIndexOf(""));
// 文件的扩展名
String folder = "/" + GlobeUPLOAD_FOLDER + "/" + workergetUser()getUserName() + "/" + GlobeWORKER_FOLDER + "/";
// 存放上传文件的目录
webfilecreateFolder(getBase(request) + folder);
// 创建文件夹,getBase(request);获得项目的物理路径(在磁盘中的位置)
String imgPath = folder + webtoolgetNowDate(2) + extend;// 产生新的相对路径(不带盘符的)
webfilecopyFile(getBase(request) + workergetPhoto(), getBase(request) + imgPath);// 上传文件(这里只是复制了,因为上传的事情之前已经完成了)
workersetPhoto(imgPath);
// 这个路径是插入数据库的
worker = workerDaoadd(worker);
// 给数据库插入一条记录
查询的时候就能获取插入数据库的路径了。
不知道你是不是想得到某一文件夹的所有文件,如果是,可以试试下面的代码:string Folder = ServerMapPath("~/YourFolder/");
SystemIODirectoryInfo oDir = new SystemIODirectoryInfo(Folder);
SystemIOFileInfo[] aFiles = oDirGetFiles();
for (int i = 0; i < aFilesLength; i++)
{
ResponseWrite("文件路径:" + aFiles[i]FullName + "<br />");
}1开发环境及框架的搭建。(基于SSH开发框架)
2数据库建表,表应该有一个字段用来存储文件在服务区上的存储路径。
3mapxml文件
4Actionxml文件
5写好实体类及get()set()方法
6DAO层
7Action()实现,Action()里面需要实现文件的上传服务器功能和路径存储数据库功能。
8前端页面,前端页面需要实现文件的选择功能。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)