中文字幕在线一区二区在线,久久久精品免费观看国产,无码日日模日日碰夜夜爽,天堂av在线最新版在线,日韩美精品无码一本二本三本,麻豆精品三级国产国语,精品无码AⅤ片,国产区在线观看视频

      如何使用Web Service傳輸文件

      時間:2024-10-31 21:56:02 J2EE培訓 我要投稿
      • 相關推薦

      如何使用Web Service傳輸文件

        server對外只開放80端口,并且還需要提供文件上傳和下載功能的應用,下面yjbys小編為大家準備了關于如何使用Web Service傳輸文件的文章,歡迎閱讀。

        1. 首先是一個封裝了服務器端文件路徑,客戶端文件路徑和要傳輸的字節數組的MyFile類。

        package com.googlecode.garbagecan.cxfstudy.filetransfer;

        public class MyFile {

        private String clientFile;

        private String serverFile;

        private long position;

        private byte[] bytes;

        public String getClientFile() {

        return clientFile;

        }

        public void setClientFile(String clientFile) {

        this.clientFile = clientFile;

        }

        public String getServerFile() {

        return serverFile;

        }

        public void setServerFile(String serverFile) {

        this.serverFile = serverFile;

        }

        public long getPosition() {

        return position;

        }

        public void setPosition(long position) {

        this.position = position;

        }

        public byte[] getBytes() {

        return bytes;

        }

        public void setBytes(byte[] bytes) {

        this.bytes = bytes;

        }

        }

        2. 文件傳輸的Web Service接口

        package com.googlecode.garbagecan.cxfstudy.filetransfer;

        import javax.jws.WebMethod;

        import javax.jws.WebService;

        @WebService

        public interface FileTransferService {

        @WebMethod

        void uploadFile(MyFile myFile) throws FileTransferException;

        @WebMethod

        MyFile downloadFile(MyFile myFile) throws FileTransferException;

        }

        3. 文件傳輸的Web Service接口實現類,主要是一些流的操作

        package com.googlecode.garbagecan.cxfstudy.filetransfer;

        import java.io.File;

        import java.io.FileInputStream;

        import java.io.IOException;

        import java.io.InputStream;

        import java.io.OutputStream;

        import java.util.Arrays;

        import org.apache.commons.io.FileUtils;

        import org.apache.commons.io.IOUtils;

        public class FileTransferServiceImpl implements FileTransferService {

        public void uploadFile(MyFile myFile) throws FileTransferException {

        OutputStream os = null;

        try {

        if (myFile.getPosition() != 0) {

        os = FileUtils.openOutputStream(new File(myFile.getServerFile()), true);

        } else {

        os = FileUtils.openOutputStream(new File(myFile.getServerFile()), false);

        }

        os.write(myFile.getBytes());

        } catch(IOException e) {

        throw new FileTransferException(e.getMessage(), e);

        } finally {

        IOUtils.closeQuietly(os);

        }

        }

        public MyFile downloadFile(MyFile myFile) throws FileTransferException {

        InputStream is = null;

        try {

        is = new FileInputStream(myFile.getServerFile());

        is.skip(myFile.getPosition());

        byte[] bytes = new byte[1024 * 1024];

        int size = is.read(bytes);

        if (size > 0) {

        byte[] fixedBytes = Arrays.copyOfRange(bytes, 0, size);

        myFile.setBytes(fixedBytes);

        } else {

        myFile.setBytes(new byte[0]);

        }

        } catch(IOException e) {

        throw new FileTransferException(e.getMessage(), e);

        } finally {

        IOUtils.closeQuietly(is);

        }

        return myFile;

        }

        }

        4. 一個簡單的文件傳輸異常類

        package com.googlecode.garbagecan.cxfstudy.filetransfer;

        public class FileTransferException extends Exception {

        private static final long serialVersionUID = 1L;

        public FileTransferException() {

        super();

        }

        public FileTransferException(String message, Throwable cause) {

        super(message, cause);

        }

        public FileTransferException(String message) {

        super(message);

        }

        public FileTransferException(Throwable cause) {

        super(cause);

        }

        }

        5. 下面是Server類用來發布web service

        package com.googlecode.garbagecan.cxfstudy.filetransfer;

        import javax.xml.ws.Endpoint;

        public class FileTransferServer {

        public static void main(String[] args) throws Exception {

        Endpoint.publish("http://localhost:9000/ws/jaxws/fileTransferService", new FileTransferServiceImpl());

        }

        }

        6. 最后是Client類,用來發送文件上傳和下載請求。

        package com.googlecode.garbagecan.cxfstudy.filetransfer;

        import java.io.File;

        import java.io.FileInputStream;

        import java.io.IOException;

        import java.io.InputStream;

        import java.io.OutputStream;

        import java.util.Arrays;

        import org.apache.commons.io.FileUtils;

        import org.apache.commons.io.IOUtils;

        import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;

        public class FileTransferClient {

        private static final String address = "http://localhost:9000/ws/jaxws/fileTransferService";

        private static final String clientFile = "/home/fkong/temp/client/test.zip";

        private static final String serverFile = "/home/fkong/temp/server/test.zip";

        public static void main(String[] args) throws Exception {

        long start = System.currentTimeMillis();

        // uploadFile();

        // downloadFile();

        long stop = System.currentTimeMillis();

        System.out.println("Time: " + (stop - start));

        }

        private static void uploadFile() throws FileTransferException {

        InputStream is = null;

        try {

        MyFile myFile = new MyFile();

        is = new FileInputStream(clientFile);

        byte[] bytes = new byte[1024 * 1024];

        while (true) {

        int size = is.read(bytes);

        if (size <= 0) {

        break;

        }

        byte[] fixedBytes = Arrays.copyOfRange(bytes, 0, size);

        myFile.setClientFile(clientFile);

        myFile.setServerFile(serverFile);

        myFile.setBytes(fixedBytes);

        uploadFile(myFile);

        myFile.setPosition(myFile.getPosition() + fixedBytes.length);

        }

        } catch(IOException e) {

        throw new FileTransferException(e.getMessage(), e);

        } finally {

        IOUtils.closeQuietly(is);

        }

        }

        private static void uploadFile(MyFile myFile) throws FileTransferException {

        JaxWsProxyFactoryBean factoryBean = new JaxWsProxyFactoryBean();

        factoryBean.setAddress(address);

        factoryBean.setServiceClass(FileTransferService.class);

        Object obj = factoryBean.create();

        FileTransferService service = (FileTransferService) obj;

        service.uploadFile(myFile);

        }

        private static void downloadFile() throws FileTransferException {

        MyFile myFile = new MyFile();

        myFile.setServerFile(serverFile);

        long position = 0;

        while (true) {

        myFile.setPosition(position);

        myFile = downloadFile(myFile);

        if (myFile.getBytes().length <= 0) {

        break;

        }

        OutputStream os = null;

        try {

        if (position != 0) {

        os = FileUtils.openOutputStream(new File(clientFile), true);

        } else {

        os = FileUtils.openOutputStream(new File(clientFile), false);

        }

        os.write(myFile.getBytes());

        } catch(IOException e) {

        throw new FileTransferException(e.getMessage(), e);

        } finally {

        IOUtils.closeQuietly(os);

        }

        position += myFile.getBytes().length;

        }

        }

        private static MyFile downloadFile(MyFile myFile) throws FileTransferException {

        JaxWsProxyFactoryBean factoryBean = new JaxWsProxyFactoryBean();

        factoryBean.setAddress(address);

        factoryBean.setServiceClass(FileTransferService.class);

        Object obj = factoryBean.create();

        FileTransferService service = (FileTransferService) obj;

        return service.downloadFile(myFile);

        }

        }

        首先需要準備一個大一點的文件,然后修改代碼中的clientFile和serverFile路徑,然后分別打開uploadFile和downloadFile注釋,運行程序,檢查目標文件查看結果。

        這個程序還是比較簡單的,但基本生完成了文件上傳下載功能,如果需要,也可以對這個程序再做點修改使其支持斷點續傳。

      【如何使用Web Service傳輸文件】相關文章:

      Web Service的開發與應用基礎07-12

      如何使用qq秒傳文件08-09

      電腦文件怎么傳輸到iPad07-30

      如何面試Web前端開發10-10

      iTunes文件共享功能怎么使用09-19

      TTF字體文件如何安裝11-03

      Excel文件如何設置密碼08-25

      學習如何打開php文件10-10

      如何由淺入深實踐學習 Web 標準10-10

      使用XQEngine來搜索XML文件內容07-07

      主站蜘蛛池模板: 亚洲电影一区二区| 国产精品无码不卡在线播放| 日韩精品一区二区三区中文9| 芜湖县| 特一级熟女毛片免费观看| 精品偷拍一区二区视频| 欧美成人高清手机在线视频| 江山市| 康定县| 鄯善县| аⅴ天堂一区视频在线观看| 亚洲激情人体艺术视频| 国产AV高清精品久久| 亚洲一码二码在线观看| 在线免费观看视频1区| 国产成品精品午夜视频| 镇坪县| 南郑县| 岗巴县| 安康市| 兴山县| 莱西市| 岳西县| 综艺| 邢台市| 午夜影院91| 国产成人一区二区三区久久精品| 亚洲女同制服中文字幕| 二连浩特市| 免费人人av看| 国产剧情麻豆一区二区三区亚洲| 最新国产精品精品视频| 另类人妖在线观看一区二区| 武强县| 99久久婷婷这里只有精品| 国产亚洲精品综合99久久| 日本一区二区三区四区不卡视频 | 久久99中文字幕久久| 亚洲综合一区二区三区视频| 久久精品国产成人午夜福利| 国产女主播福利一区在线观看|