Java jax - rs程序接受来自外部系统的文件



我正在尝试创建一个简单的基于 Java Jax-RS 的 Web 服务,该服务接受 byte[] 格式或 blob 格式的文件并将其推送到 FTP 文件夹。Salesforce 使用此服务通过此 Java API 将文件推送到目录。为了进行测试,我已经在 https://ftptransfer.herokuapp.com/myresource 托管了这个应用程序

我需要创建一个基本上接受来自外部系统的文件的类

package com.example;
import javax.ws.rs.Consumes;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import javax.ws.rs.POST;
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.Response;
import org.glassfish.jersey.media.multipart.FormDataContentDisposition;
import org.glassfish.jersey.media.multipart.FormDataParam;

@Path("sendFiles")
public class FileTransfer {
    @POST
    @Consumes({MediaType.MULTIPART_FORM_DATA})
    public String uploadPdfFile(  ) 
    {        

        return "Uploaded successfully";
    }

}

可以提供帮助以提供任何良好的参考来实现这一目标,因为我尝试了来自不同博客的许多方法,但没有一种对我有很大帮助。

我能够通过以下方式实现这一点

import org.apache.commons.net.ftp.FTPClient;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import javax.ws.rs.Consumes;
import javax.ws.rs.Path;
import java.io.InputStream;
import javax.ws.rs.POST;
@Path("sendFiles")
public class FileTransfer {
    @POST
    @Path("file")
    @Consumes("*/*")
    public String uploadPdfFile(InputStream fileInputStream) 
    {        
        FTPClient client = new FTPClient();
        boolean login;
        FileInputStream fis = null;
        int read = 0;
        byte[] bytes = new byte[1024];
        OutputStream out;
        try {
            File file=new File("testhm001.txt"); 
            out = new FileOutputStream(file);
            while ((read = fileInputStream.read(bytes)) != -1)
            {
                out.write(bytes, 0, read);
            }
            out.flush();
            out.close();
            InputStream in = new FileInputStream(file);
            BufferedReader reader = new BufferedReader(new InputStreamReader(in));
            StringBuilder out1 = new StringBuilder();
            String line;
            while ((line = reader.readLine()) != null) {
                out1.append(line);
            }
        return "done";
    }

}

最新更新