servlet jsp 前台与后台的同时传文件和文本

   初学 后台,关于前端往端传递图片和文本踩了个大坑,整理下来纪念一下。

  一般处理这种问题,可以选择无插件,但太过麻烦,然后可以从用插件。

  例如  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);//写入




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值