⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 formdata.java

📁 这是一个用JAVA语言编写的BBS论坛程序
💻 JAVA
字号:
package javabean;

import java.util.*;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.ServletInputStream;

public class FormData{
  private String f_path="";//上传文件存入目录
  private String f_name=String.valueOf((new Date()).getTime())+String.valueOf(number(5));//上传文件名字 f_name+_f_name  _f_name+=1
  private int _f_name=0;
  private String fileEx="";//扩展名
  private String key_name;//hash-------key(key_name=表单元素file名)对应文件上传路径
  private String path="";
  private String errcodes="";
  Hashtable hash=new Hashtable();

  public int number(int n){//随机数
    Random rand=new Random();
    int i=rand.nextInt();
    i%=n;
    while(i==0)
    {
        i=rand.nextInt();
        i%=n;
    }
    if(i<0)
        i=-i;
    return(i);
  }

  public String rtrim(String Str){
     return Str.replaceAll("\\s*$|\r|\n","");
  }

  public void getFormData(HttpServletRequest req)
         throws ServletException,IOException{
    errcodes="";
    ServletInputStream stream=null;
    try{
      stream=req.getInputStream();
    }catch(Exception e){
      stream.close();return;
    }
    int i=0;
    byte f_data[]=new byte[4096];

    i=stream.readLine(f_data,0,f_data.length);
    String f_bound=(new String(f_data)).trim();//得到分割符
    while(i!=-1){
      String f_line="";
      f_data=new byte[4096];
      i=stream.readLine(f_data,0,f_data.length);
      f_line=(new String(f_data)).trim();

      if(f_line.indexOf('"'+"; filename="+'"')!=-1&&!f_line.substring(f_line.indexOf('"'+"; filename="+'"')+13,f_line.length()-1).equals("")){
        key_name=f_line.substring(f_line.indexOf("name="+'"')+6,f_line.indexOf('"'+"; filename="+'"'));
        fileEx=f_line.substring(f_line.indexOf('"'+"; filename="+'"')+13,f_line.length()-1);
        fileEx=fileEx.substring(fileEx.length()-4,fileEx.length());
        f_line="";
        f_data=new byte[4096];
        i=stream.readLine(f_data,0,f_data.length);//读取Content-Type
        f_line=(new String(f_data)).trim();
        if(!fileEx.toLowerCase().equals(".gif")&&!fileEx.toLowerCase().equals(".jpg")&&!fileEx.toLowerCase().equals(".png")&&!fileEx.toLowerCase().equals(".bmp")){
           errcodes="<li>只支持上传GIF,JPG,PNG,BMP类型图片";
        }else{
           i=stream.readLine(f_data,0,f_data.length);//下跳一行
           try{
             _f_name+=1;
             File file=new File(f_path,"upload/"+f_name+String.valueOf(_f_name)+fileEx);
             FileOutputStream fos=new FileOutputStream(file);
             DataOutputStream dos=new DataOutputStream(fos);
             while(i!=-1){
               f_line="";
               f_data=new byte[4096];
               i=stream.readLine(f_data,0,f_data.length);
               f_line=(new String(f_data)).trim();
               if(f_line.startsWith(f_bound))break;
               dos.write(f_data,0,i);
             }
             fos.flush();
             fos.close();
             dos.close();
             if(file.length()/1024>5000){
               errcodes="<li>您上传的图片为"+file.length()/1024+"KB,超出允许上传最大值5000KB";
               file.delete();
             }
             if(file.exists()){
                 path = "upload/"+f_name+String.valueOf(_f_name)+fileEx;
                 hash.put(key_name,path);
             }
           }catch(Exception e){errcodes="<li>保存文件失败";}
        }
      }else if(f_line.indexOf(" name="+'"')!=-1){
        String name=f_line.substring(38,f_line.length()-1);
        i=stream.readLine(f_data,0,f_data.length);
        f_line="";
        while(i!=-1){
          f_data=new byte[4096];
          i=stream.readLine(f_data,0,f_data.length);
          if((new String(f_data)).trim().startsWith(f_bound))break;
          f_line+=rtrim(new String(f_data,0,i,"gb2312"))+"\r\n";
        }
        hash.put(name,f_line.substring(0,f_line.length()-2));
      }
    }
    stream.close();
  }

  public String getData(String keys){
    return (String)this.hash.get(keys);
  }
  public String getError(){
    return this.errcodes;
  }

  public void setPath(String f_path){
    this.f_path=f_path;
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -