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

📄 fileuploadtest.java

📁 这是远程web服务调用的一个包,可以将JSP直接作为服务
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
        WebConversation wc = new WebConversation();        WebRequest request = new GetMethodWebRequest( getHostPath() + "/Default.html" );        WebResponse simplePage = wc.getResponse( request );        WebRequest formSubmit = simplePage.getForms()[0].getRequest();        try {            formSubmit.setParameter( "message", new UploadFileSpec[] { new UploadFileSpec( file ), new UploadFileSpec( file2, "text/more" ) } );            fail( "Permitted two files on a single file parameter" );        } catch (IllegalRequestParameterException e) {        }        file.delete();        file2.delete();    }    public void testInputStreamAsFile() throws Exception {        ByteArrayInputStream bais = new ByteArrayInputStream( "Not much text\nBut two lines\n".getBytes() );        defineResource( "ListParams", new MimeEcho() );        defineWebPage( "Default", "<form method=POST action = \"ListParams\" enctype=\"multipart/form-data\"> " +                                  "<Input type=file name=message>" +                                  "<Input type=submit name=update value=age>" +                                  "</form>" );        WebConversation wc = new WebConversation();        WebRequest request = new GetMethodWebRequest( getHostPath() + "/Default.html" );        WebResponse simplePage = wc.getResponse( request );        WebRequest formSubmit = simplePage.getForms()[0].getRequest();        formSubmit.selectFile( "message", "temp.txt", bais, "text/plain" );        WebResponse encoding = wc.getResponse( formSubmit );        assertEquals( "text/plain:message.name=temp.txt&message.lines=2&update=age", encoding.getText().trim() );    }    public void testFileUploadWithoutForm() throws Exception {        ByteArrayInputStream bais = new ByteArrayInputStream( "Not much text\nBut two lines\n".getBytes() );        defineResource( "ListParams", new MimeEcho() );        WebConversation wc = new WebConversation();        PostMethodWebRequest formSubmit = new PostMethodWebRequest( getHostPath() + "/ListParams" );        formSubmit.setMimeEncoded( true );        formSubmit.selectFile( "message", "temp.txt", bais, "text/plain" );        WebResponse encoding = wc.getResponse( formSubmit );        assertEquals( "text/plain:message.name=temp.txt&message.lines=2", encoding.getText().trim() );    }    public void testFileContentType() throws Exception {        File file = new File( "temp.gif" );        FileOutputStream fos = new FileOutputStream( file );        fos.write( new byte[] { 1, 2, 3, 4, 0x7f, 0x23 }, 0, 6 );        fos.close();        defineResource( "ListParams", new MimeEcho() );        defineWebPage( "Default", "<form method=POST action = \"ListParams\" enctype=\"multipart/form-data\"> " +                                  "<Input type=file name=message>" +                                  "</form>" );        WebConversation wc = new WebConversation();        WebRequest request = new GetMethodWebRequest( getHostPath() + "/Default.html" );        WebResponse simplePage = wc.getResponse( request );        WebRequest formSubmit = simplePage.getForms()[0].getRequest();        formSubmit.selectFile( "message", file );        WebResponse encoding = wc.getResponse( formSubmit );        assertEquals( "image/gif:message.name=temp.gif&message.lines=1", encoding.getText().trim() );        file.delete();    }    public void testSpecifiedFileContentType() throws Exception {        File file = new File( "temp.new" );        FileOutputStream fos = new FileOutputStream( file );        fos.write( new byte[] { 1, 2, 3, 4, 0x7f, 0x23 }, 0, 6 );        fos.close();        defineResource( "ListParams", new MimeEcho() );        defineWebPage( "Default", "<form method=POST action = \"ListParams\" enctype=\"multipart/form-data\"> " +                                  "<Input type=file name=message>" +                                  "</form>" );        WebConversation wc = new WebConversation();        WebRequest request = new GetMethodWebRequest( getHostPath() + "/Default.html" );        WebResponse simplePage = wc.getResponse( request );        WebRequest formSubmit = simplePage.getForms()[0].getRequest();        formSubmit.selectFile( "message", file, "x-application/new" );        WebResponse encoding = wc.getResponse( formSubmit );        assertEquals( "x-application/new:message.name=temp.new&message.lines=1", encoding.getText().trim() );        file.delete();    }}class ByteArrayDataSource implements DataSource {    ByteArrayDataSource( String contentType, byte[] body ) {        _contentType = contentType;        _inputStream = new ByteArrayInputStream( body );    }    public java.io.InputStream getInputStream() {        return _inputStream;    }    public java.io.OutputStream getOutputStream() throws IOException {        throw new IOException();    }    public java.lang.String getContentType() {        return _contentType;    }    public java.lang.String getName() {        return "test";    }    private String      _contentType;    private InputStream _inputStream;}class MimeEcho extends PseudoServlet {    public WebResource getPostResponse() {        StringBuffer sb = new StringBuffer();        try {            String contentType = getHeader( "Content-Type" );            DataSource ds = new ByteArrayDataSource( contentType, getBody() );            MimeMultipart mm = new MimeMultipart( ds );            int numParts = mm.getCount();            for (int i = 0; i < numParts; i++) {                appendPart( sb, (MimeBodyPart) mm.getBodyPart(i) );                if (i < numParts-1) sb.append( '&' );            }        } catch (MessagingException e) {            e.printStackTrace();            sb.append( "Oops: " + e );        } catch (IOException e) {            e.printStackTrace();            sb.append( "Oops: " + e );        }        return new WebResource( sb.toString(), "text/plain" );    }    private void appendPart( StringBuffer sb, MimeBodyPart mbp ) throws IOException, MessagingException {        String[] disposition = mbp.getHeader( "Content-Disposition" );        String name = getHeaderAttribute( disposition[0], "name" );        if (mbp.getFileName() == null) {            appendFieldValue( name, sb, mbp );        } else {            sb.append( mbp.getContentType() ).append( ':' );            appendFileSpecs( name, sb, mbp );        }    }    private void appendFieldValue( String parameterName, StringBuffer sb, MimeBodyPart mbp ) throws IOException, MessagingException {        sb.append( parameterName ).append( "=" ).append( URLEncoder.encode( mbp.getContent().toString() ) );    }    private void appendFileSpecs( String parameterName, StringBuffer sb, MimeBodyPart mbp ) throws IOException, MessagingException {        String filename = mbp.getFileName();        filename = filename.substring( filename.lastIndexOf( File.separator )+1 );        BufferedReader br = new BufferedReader( new StringReader( mbp.getContent().toString() ) );        int numLines = 0;        while (br.readLine() != null) numLines++;        sb.append( parameterName ).append( ".name=" ).append( filename ).append( "&" );        sb.append( parameterName ).append( ".lines=" ).append( numLines );    }    private String getHeaderAttribute( String headerValue, String attributeName ) {        StringTokenizer st = new StringTokenizer( headerValue, ";=", /* returnTokens */ true );        int state = 0;        String name = "";        while (st.hasMoreTokens()) {            String token = st.nextToken();            if (token.equals( ";" )) {                state = 1;   // next token is attribute name            } else if (token.equals( "=" )) {                if (state == 1) {                    state = 2;   // next token is attribute value                } else {                    state = 0;   // reset and keep looking                }            } else if (state == 1) {                name = token.trim();            } else if (state == 2) {                if (name.equalsIgnoreCase( attributeName )) {                    return stripQuotes( token.trim() );                }            }        }        return "";    }    private String stripQuotes( String value ) {        if (value.startsWith( "\"" ) && value.endsWith( "\"" )) {            return value.substring( 1, value.length()-1 );        } else {            return value;        }    }}

⌨️ 快捷键说明

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