初学 后台,关于前端往端传递图片和文本踩了个大坑,整理下来纪念一下。
一般处理这种问题,可以选择无插件,但太过麻烦,然后可以从用插件。
例如 FileUpload组件 代码展示
List<FileItem> list = null;
String uploadpath="";
//判断提交过来的表单是否为文件上传菜单
boolean isMultipart= ServletFileUpload.isMultipartContent(request);
if(isMultipart){
//构造一个文件上传处理对象
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
int max=1024*1024*100;
//
upload.setHeaderEncoding("utf-8");
//获取集合
try {
list = upload.parseRequest(request);
} catch (FileUploadException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
//创建迭代器
Iterator<FileItem> iterator = list.iterator();
File uploadfile=new File(request.getSession().getServletContext().getRealPath("/")+"upload");
uploadpath = uploadfile.getAbsolutePath()+File.separator+uploadpath;
if(uploadfile.exists()==false){
uploadfile.mkdir();
}
while(iterator.hasNext()){
FileItem item=iterator.next();
//如果是普通表单
if(item.isFormField())
{
System.out.println(item.getFieldName());
String name = item.getFieldName(); //得到名称
String value = item.getString( "UTF-8"); //得到对应的值
System.out.println("name is :"+name+"value is"+value);
}
else if(!item.isFormField())
{
String filepath=item.getName();
if(filepath!=null)
{
File filename=new File(item.getFieldName());
}
if(item.getSize()>max){
System.out.println("文件过大,上传失败");
break;
}
File savefile=new File(uploadpath,filepath);
try {
//写到savefile中 ,保存文件
item.write(savefile);
System.out.println("上传成功");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}//end while
}
然后 里面有很多 new File(),关于file 不仅只代表存在的文件和目录并且也可以new 一个新的file对象,
public static void main(String[] args) throws Exception{
//构造函数File(String pathname)
File f1 =new File("D:\\1abc\\3.txt");
if(!f1.exists()){
f1.createNewFile();
}
FileOutputStream out=new FileOutputStream(f1);
byte[] a="we have to sucess".getBytes();
out.write(a);
//File(String parent,String child)
File f2 =new File("c:\\abc","2.txt");
//File(File parent,String child)
File f3 =new File("c:"+File.separator+"abc");//separator 跨平台分隔符
File f4 =new File(f3,"3.txt");
System.out.println(f1);//c:\abc\1.txt
}
/*获取文件名*/
String name=file.getName() ;
/*获取文件路径*/
String path_=file.getPath();
/*获取绝对路径名*/
String absPath=file.getAbsolutePath();
/*获取父亲文件路径*/
String parent=file.getParent();
/*文件大小*/
long size=file.length();
PrinWriter(writer,true);//写入