• WebService实现文件上传下载


    一:服务端:一个普通java web工程

    package com.wzh.file;
    
    import com.sun.xml.ws.developer.StreamingAttachment;
    import java.io.BufferedOutputStream;
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.OutputStream;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javax.activation.DataHandler;
    import javax.activation.FileDataSource;
    import javax.jws.WebMethod;
    import javax.jws.WebService;
    import javax.xml.bind.annotation.XmlMimeType;
    import javax.xml.ws.soap.MTOM;
    
    /**
     * @author  y
     * @version V1.0
     * @desc    文件上传下载服务
     */
    @StreamingAttachment(parseEagerly = true, memoryThreshold = 40000L)
    @MTOM
    @WebService(name = "MtomStreaming",
            serviceName = "MtomStreamingService",
            targetNamespace = "http://wzh.com",
            wsdlLocation = "StreamingImplService.wsdl")
    public class FileManager {
        
        /**
         * 文件上传
         * @param fileName
         * @param data
         * @return 
         */
        @WebMethod
        public String fileUpload(String fileName,
                @XmlMimeType("application/octet-stream") DataHandler data){
            String result;
            
            File file = new File(fileName);
            
            try {
                OutputStream os = new BufferedOutputStream(new FileOutputStream(file));
                
                data.writeTo(os);
                
                os.close();
                
                result = "1";
            } catch (FileNotFoundException ex) {
                result = "0";
                Logger.getLogger(FileManager.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IOException ex) {
                result = "0";
                Logger.getLogger(FileManager.class.getName()).log(Level.SEVERE, null, ex);
            }
            
            
            return result;
        }
        
        
        /**
         * 文件下载
         * @param filename
         * @return 
         */
        @XmlMimeType("application/octet-stream")
        @WebMethod
        public DataHandler fileDownload(String filename) {
            return new DataHandler(new FileDataSource(filename));
        } 
    }

    二:客户端:通过NetBeans建立Web服务客户端,根据Web服务端生成的wsdl进行创建,将服务端wsdl文件保存到本地,通过本地文件方式创建:

    本地测试:

    (1)新建InputStreamDataSource类继承DataSource

    package test;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import javax.activation.DataSource;
    
    public class InputStreamDataSource implements DataSource {
        private final InputStream inputStream;
    
        public InputStreamDataSource(InputStream inputStream) {
            this.inputStream = inputStream;
        }
    
        @Override
        public InputStream getInputStream() throws IOException {
            return inputStream;
        }
    
        @Override
        public OutputStream getOutputStream() throws IOException {
            throw new UnsupportedOperationException("Not implemented");
        }
    
        @Override
        public String getContentType() {
            return "*/*";
        }
    
        @Override
        public String getName() {
            return "InputStreamDataSource";
        }
    }

    (2)Test.java

    package test;
    
    import com.wzh.MtomStreaming;
    import com.wzh.MtomStreamingService;
    import java.io.BufferedOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import javax.activation.DataHandler;
    
    public class Test {
    
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args) {
            downloadFile();
        }
        
        
        public static void uploadFile(){
            MtomStreamingService service = new MtomStreamingService();
            MtomStreaming port = service.getMtomStreamingPort();
            
            InputStream is;
    
            try {
                is = new FileInputStream("/home/y/my_temp/tt.doc");
    
                DataHandler upf = new DataHandler(new InputStreamDataSource(is));
                String result = port.fileUpload("/home/y/my_temp2/tt.doc", upf);
                
                System.out.println("==========upload result:"+result);
                is.close();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        
        
        public static void downloadFile(){
            MtomStreamingService service = new MtomStreamingService();
            MtomStreaming port = service.getMtomStreamingPort();
            
            DataHandler dhn = port.fileDownload("/home/y/my_temp/22.doc");
            try {
                File tempFile = new File("/home/y/my_temp/w01.doc");
    
                OutputStream output = new BufferedOutputStream(new FileOutputStream(tempFile));
                dhn.writeTo(output);
    
                output.close();
                
                System.out.println("====download");
            } catch (IOException e1) {
                e1.printStackTrace();
            }
        }
        
    }
  • 相关阅读:
    MongoDB学习笔记(查询)
    PHP IP地址转换
    PHP SESSION的工作原理解析(转)
    JavaScript 之 RegExp 对象
    jquery 几个实用的小方法
    JS之document.cookie随笔
    CodeForces
    CodeForces
    翻转 -- CodeForces
    Codeforces --- 982C Cut 'em all! DFS加贪心
  • 原文地址:https://www.cnblogs.com/yshyee/p/4432353.html
Copyright © 2020-2023  润新知