java web service 上传下载文件

1、新建动态web工程youmeFileServer,新建包com,里面新建类FileProgress

package com;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.sql.Date;
import java.text.SimpleDateFormat;
import java.util.Random;

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
/*
 * web servcie 上传下载文件
 */
public class FileProgress
{
    public String sayHello(String name)
    {
        return "Hello," + name+"\n"+getdir("2");
    }

    /*
     * 文件上传服务
     */
    public String uploadFile(String fileName, String filetype, String file)//byte[] bytes)
    {
        FileOutputStream fos = null;
        try
        {
            String filedir = getdir(filetype);
            BASE64Decoder decoder= new BASE64Decoder();
            byte[] bytes = decoder.decodeBuffer(file);

            if(filedir=="")
            {
                return "";
            }
            Integer rdm = new Random().nextInt(10000);
            String savename = getDataTimeString(true) +rdm.toString()+fileName.substring(fileName.indexOf('.'));
            fos = new FileOutputStream(filedir+savename);
            // 将字节数组bytes中的数据,写入文件输出流fos中
            fos.write(bytes);
            fos.flush();
            return filedir +savename;
        }
        catch (Exception e)
        {
            e.printStackTrace();
            return "";
        }
        finally
        {
            try
            {
                fos.close();
            }
            catch (IOException e)
            {
                e.printStackTrace();
            }
        }
    }

    /**
     * @param filepath
     */
    private String getdir(String filetype)
    {
        String path = "F:\\youme\\{0}\\" + getDataString()
                + "\\";
        switch (filetype)
        {
            case "2":
                path = path.replace("{0}", "image");
                break;
            case "3":
                path = path.replace("{0}", "vedio");
                break;                    
            default:
                return "";
        }
        try
        {
            java.io.File file = new java.io.File(path);
            if(!file.exists())
            {
                if(!file.mkdirs())
                {
                    return "";
                }
            }
            return path;
        }
        catch(Exception ex)
        {
            return "";
        }
        finally
        {
            
        }
    }

    /*
     * 文件下载服务
     */
    public String downloadFile(String filepath)
    {
//        filepath = "F:\\youme\\vedio\\2013-09-03\\201309031700143294.amr";
        FileInputStream in = null;
        byte bytes[] = null;
        String file = null;
        try
        {
            in = new FileInputStream(filepath);
            bytes = new byte[in.available()];

            // 从输入流in中,将 bytes.length 个字节的数据读入字节数组bytes中
            in.read(bytes);
            BASE64Encoder encoder = new BASE64Encoder();
            file = encoder.encode(bytes);
        }
        catch (Exception e)
        {
            e.printStackTrace();
            return "";
        }
        finally
        {
            try
            {
                in.close();
            }
            catch (IOException e)
            {
                e.printStackTrace();
            }
        }
//        return bytes;
        return file;
    }
    /*
     * 获取当前时间
     */
    private static String getDataTimeString(Boolean isfilename)
    {
        try
        {
            SimpleDateFormat formatter = null;
            if(!isfilename)
            {
                formatter= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
            }
            else
            {
                formatter= new SimpleDateFormat("yyyyMMddHHmmss"); 
            }
            Date curDate = new Date(System.currentTimeMillis());//获取当前时间     
            return formatter.format(curDate); 
        }
        catch(Exception ex)
        {
            System.out.println(ex.getMessage());
            return "";
        }
    }

    /*
     * 获取当前日期
     */
    private static String getDataString()
    {
        try
        {
            SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");     
            Date curDate = new Date(System.currentTimeMillis());//获取当前时间     
            return formatter.format(curDate); 
        }
        catch(Exception ex)
        {
            System.out.println(ex.getMessage());
            return "";
        }
    }    
    
}

2、发布测试webservice(eclipse Java EE IDE)

右键刚才建立的类,现在webservice-->create webservice,

webservice type 选择bottom upjava bean web service,service implementation 选择目标类,

下一步选择要发布公开的方法接口,直到完成,tomcat已启动,

右键刚生成的wsdl文件夹里面的wsdl文件,选择测试webservice,输入对应方法的参数即可。

posted on 2013-09-11 15:17  ※WYF※  阅读(6926)  评论(0编辑  收藏  举报