jsp檔案上傳源碼,不限制上傳大小,速度一流

來源:互聯網
上載者:User
<%@page contentType="text/html"%>
<%@page pageEncoding="GB2312"%>
<%@page import="java.util.*" %>
<%@page import="java.io.*" %>
<%
//jsp檔案上傳源碼,單一或多檔案也可與其他標單類型混雜使用,可不限制上傳大小,速度一流
//作者:sgzyl 2007.10.26
request.setCharacterEncoding("GBK");
response.setContentType("text/html;charset=GB2312");
char[] hchl={13,10};
String boundary=request.getContentType().substring(30);
String field_boundary="--"+boundary+new String(hchl);
String last_boundary="--"+boundary+"--"+new String(hchl);
ServletInputStream getdata=request.getInputStream();
ByteArrayOutputStream temp=new ByteArrayOutputStream();
byte[] data_line=new byte[8192];
int line_byte_count=0;
boolean found_boundary=false;
while((line_byte_count=getdata.readLine(data_line,0,data_line.length))!=-1){
    if(!found_boundary){
        line_byte_count=getdata.readLine(data_line,0,data_line.length);
    }
    String temp_str=new String(data_line,0,line_byte_count);
    if(temp_str.indexOf("filename")!=-1){
        if(temp_str.substring(temp_str.indexOf("filename=")+9,temp_str.lastIndexOf("/"")+1).length()>2){
            String file_name=temp_str.substring(temp_str.lastIndexOf("//")+1,temp_str.lastIndexOf("/""));
            line_byte_count=getdata.readLine(data_line,0,data_line.length);
            line_byte_count=getdata.readLine(data_line,0,data_line.length);
            FileOutputStream myfile=new FileOutputStream("d://"+file_name,false);
            boolean test=true;
            while(test) {
                line_byte_count=getdata.readLine(data_line,0,data_line.length);
                if(line_byte_count==-1){
                    test=false;
                    break;
                }
                if(temp.size()==0){
                    temp.write(data_line,0,line_byte_count);
                }else{
                    if(new String(data_line,0,line_byte_count).equals(field_boundary) || new String(data_line,0,line_byte_count).equals(last_boundary)){
                        myfile.write(temp.toByteArray(),0,temp.toByteArray().length-2);
                        temp.reset();
                        myfile.close();
                        out.println(file_name+"上傳成功了<br>");
                        test=false;
                        found_boundary=true;
                    }else{
                        temp.writeTo(myfile);
                        temp.reset();
                        temp.write(data_line,0,line_byte_count);
                    }
                }
            }
        }else{
            String field_name=temp_str.substring(temp_str.indexOf("name")+6,temp_str.lastIndexOf(";")-1);
            line_byte_count=getdata.readLine(data_line,0,data_line.length);
            line_byte_count=getdata.readLine(data_line,0,data_line.length);
            line_byte_count=getdata.readLine(data_line,0,data_line.length);
            line_byte_count=getdata.readLine(data_line,0,data_line.length);
            found_boundary=true;
            out.println(field_name+"沒有選擇上傳檔案!<br>");
           
        }
    } else{
        String field_name=temp_str.substring(temp_str.indexOf("name")+6,temp_str.lastIndexOf("/""));
        line_byte_count=getdata.readLine(data_line,0,data_line.length);
        temp.reset();
        boolean test=true;
        while(test) {
            line_byte_count=getdata.readLine(data_line,0,data_line.length);
            if(line_byte_count==-1){
                test=false;
                break;
            }
            if(new String(data_line,0,line_byte_count).equals(field_boundary) || new String(data_line,0,line_byte_count).equals(last_boundary)){
                test=false;
                found_boundary=true;
                if(temp.size()>2){
                    out.println(field_name+":"+new String(temp.toByteArray())+"<br>");
                }else{
                    out.println(field_name+"沒有內容!<br>");
                }
                temp.reset();
            }else{
                temp.write(data_line,0,line_byte_count);
            }
        }
    }
   
}
getdata.close();
%> 
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.