如何将文件从URL传送用java FTP?(How to transfer a file from

2019-09-20 01:51发布

获得一个网址,我想在文件中的URL转移到一个特定的到FTP。 我有两个选择:1)使用外部库(如Apache常见-10)我可以获取URL中的文件,然后上传到FTP。 2)打开两个插座(到url一个到FTP),简单地将文件从网址转移到ftp。

我说的对这个吗? 什么是做到这一点的最好方法是什么?

我使用的是春天。

这里有一些链接,我发现它:

如何下载和使用Java从网络保存文件? 。

这里是Apache共IO库

编辑

我处理100-200M的文件。

更新:我选择先下载该文件,然后上传。 我选择这样做,因为我不希望很多问题下载该文件,但我希望将文件上传到FTP服务器的问题。 所以,我认为错误处理会更好的方式。 缺乏这种解决方案的是,我存储在磁盘中的临时文件的事实。 我以后会更新,如果我会遇到一些问题。

Answer 1:

  1. 将要求您读取由URL引用的整个文件,然后才能将其发送到FTP服务器。 如果文件是真的大,您可能需要当您从URL连接读取写入到一个临时文件,那么当你发送到FTP服务器从临时文件读取。 使用这种方法,从URL中读取和写入保持到FTP服务器分开,可以单独处理错误。 例如,如果URL连接抛出异常,您可以处理相应的,也许重试请求。 您可以确保您拥有完整的文件与FTP服务器通信的任何尝试之前。

  2. 你可以这样做,如果你已建立的输入和输出流,并准备从读取和写入到他们。 这意味着你已经完成了所有的协议stull和FTP服务器上,这意味着告诉它你要上传的文件,您要上传,什么文件的名称是。 然后,你可以简单的从URL输入流中读取和写入块到FTP的输出流。 因为这是流,如果你和Web服务器,或者你和FTP服务器之间的通讯被中断。 您可能会重新启动一切从头开始。

无论哪种方式是可以接受的。



Answer 2:

1.坦率地讲,如果使用的是开源的,然后采取外部库的优势。

2.不要重新发明轮子 ,您在您的处置信任库 ,所以使用它。

我还附上我的计划,我用来上传和下载歌曲ftp server使用apache's common lib

上传:

public void goforIt(){


        FTPClient con = null;

        try
        {
            con = new FTPClient();
            con.connect("192.168.2.57");

            if (con.login("Administrator", "KUjWbk"))
            {
                con.enterLocalPassiveMode(); // important!
                con.setFileType(FTP.BINARY_FILE_TYPE);
                String data = "/sdcard/vivekm4a.m4a";

                FileInputStream in = new FileInputStream(new File(data));
                boolean result = con.storeFile("/vivekm4a.m4a", in);
                in.close();
                if (result) Log.v("upload result", "succeeded");
                con.logout();
                con.disconnect();
            }
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }






    }

你下载过:

public void goforIt(){
    FTPClient con = null;

    try
    {
        con = new FTPClient();
        con.connect("192.168.2.57");

        if (con.login("Administrator", "KUjWbk"))
        {
            con.enterLocalPassiveMode(); // important!
            con.setFileType(FTP.BINARY_FILE_TYPE);
            String data = "/sdcard/vivekm4a.m4a";

            OutputStream out = new FileOutputStream(new File(data));
            boolean result = con.retrieveFile("vivekm4a.m4a", out);
            out.close();
            if (result) Log.v("download result", "succeeded");
            con.logout();
            con.disconnect();
        }
    }
    catch (Exception e)
    {
        Log.v("download result","failed");
        e.printStackTrace();
    }



}


Answer 3:

IMPORTS :
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;

CODE : 
public static void main(String args[])
 try {
   //Create a FTP Client
   FTPClient ftp = new FTPClient();

  //Set Host Information
   ftp.connect(HOST_NAME);
   ftp.login(USER_NAME, PASSW)RD);

  //Set File Type "Specially for PDF's"
   ftp.setFileType(FTP.BINARY_FILE_TYPE, FTP.BINARY_FILE_TYPE);
   ftp.setFileTransferMode(FTP.BINARY_FILE_TYPE);

  //Change the current Directory to a desired one
   ftp.changeWorkingDirectory(SOME_DIRECTORY);

  //get File from the FTP location
   String fileNames[] = ftp.listNames();
   List<String> fTPFileNameList = new ArrayList<String>();

  //Iterate to get File Names
   if (fileNames != null && fileNames.length > 0) {
    for (String fName : fileNames) {
     fTPFileNameList.add((new File(fName)).getName());
    }
   }

  // Check the file is present on FTP
   if(fileNames != null && fileNames.length > 0 && fTPFileNameList.contains(FILE_NAME)){
    //File is present on FTP
   } else {
    //File is not present on FTP
    String httpURL = "YourDesiredURL";
    InputStream fis;
    try{
     fis = new URL(httpURL).openStream();
    } catch (FileNotFoundException e) {
     //File is not present on the URL
    }
    ftp.storeFile(FILE_NAME, fis);
    fis.close();
   }
   ftp.logout();
  } catch (Exception e) {
    e.printStackTrace();
   } 
  }

MAVEN DEPENDENCY : 

< dependency>
        < groupId>commons-net< /groupId>
        < artifactId>commons-net< /artifactId>
        < version>1.3.0</ version>
< /dependency>


JAR LOCATION : 
http://www.jarfinder.com/index.php/java/info/org.apache.commons.net.ftp.FTPClient


文章来源: How to transfer a file from url to ftp using java?