java.io.FileNotFoundException: PORT 192,168,1,79,13,205: 550 Permission denied. at sun.net.ftp.FtpClient.readReply(Unknown Source)
at sun.net.ftp.FtpClient.issueCommand(Unknown Source)
at sun.net.ftp.FtpClient.openDataConnection(Unknown Source)
at sun.net.ftp.FtpClient.put(Unknown Source)
at com.gtime.information.dao.test.FtpTool.upload(FtpTool.java:97)
at com.gtime.information.dao.test.FtpTool.main(FtpTool.java:122)

解决方案 »

  1.   

    登录也成功了,就是到了ftp.put(filename)就报错
      

  2.   

    我记得好像要选cd到某个目录,才行.
    忘了好久没有玩JFTP了
      

  3.   

    ftpClient.cd(path);
    ftpClient.binary();
    sun.net.TelnetInputStream os = ftpClient.get(file);
      

  4.   

    package nc.ui.doc.doc_007;import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;import nc.itf.doc.DocDelegator;
    import nc.vo.doc.doc_007.DirVO;
    import nc.vo.pub.BusinessException;
    import nc.vo.pub.SuperVO;import org.apache.commons.net.ftp.FTPClient;
    import org.apache.commons.net.ftp.FTPFile;
    import org.apache.commons.net.ftp.FTPReply;
    import org.apache.commons.net.ftp.FTP;public class FtpTool {
    private FTPClient ftp; private String romateDir = ""; private String userName = ""; private String password = ""; private String host = ""; private String port = "21"; public FtpTool(String url) throws IOException {
    //String url="ftp://user:password@ip:port/ftptest/psd";
    int len = url.indexOf("//");
    String strTemp = url.substring(len + 2);
    len = strTemp.indexOf(":");
    userName = strTemp.substring(0, len);
    strTemp = strTemp.substring(len + 1); len = strTemp.indexOf("@");
    password = strTemp.substring(0, len);
    strTemp = strTemp.substring(len + 1);
    host = "";
    len = strTemp.indexOf(":");
    if (len < 0)//没有设置端口
    {
    port = "21";
    len = strTemp.indexOf("/");
    if (len > -1) {
    host = strTemp.substring(0, len);
    strTemp = strTemp.substring(len + 1);
    } else {
    strTemp = "";
    }
    } else {
    host = strTemp.substring(0, len);
    strTemp = strTemp.substring(len + 1);
    len = strTemp.indexOf("/");
    if (len > -1) {
    port = strTemp.substring(0, len);
    strTemp = strTemp.substring(len + 1);
    } else {
    port = "21";
    strTemp = "";
    }
    }
    romateDir = strTemp;
    ftp = new FTPClient();
    ftp.connect(host, FormatStringToInt(port)); } public FtpTool(String host, int port) throws IOException {
    ftp = new FTPClient();
    ftp.connect(host, port);
    } public String login(String username, String password) throws IOException {
    this.ftp.login(username, password);
    return this.ftp.getReplyString();
    } public String login() throws IOException {
    this.ftp.login(userName, password);
    System.out.println("ftp用户: " + userName);
    System.out.println("ftp密码: " + password);
    if (!romateDir.equals(""))
    System.out.println("cd " + romateDir);
    ftp.changeWorkingDirectory(romateDir);
    return this.ftp.getReplyString();
    } public boolean upload(String pathname, String filename) throws IOException, BusinessException { int reply;
    int j;
    String m_sfilename = null;
    filename = CheckNullString(filename);
    if (filename.equals(""))
    return false;
    reply = ftp.getReplyCode();
    if (!FTPReply.isPositiveCompletion(reply)) {
    ftp.disconnect();
    System.out.println("FTP server refused connection.");
    System.exit(1);
    }
    FileInputStream is = null;
    try {
    File file_in;
    if (pathname.endsWith(File.separator)) {
    file_in = new File(pathname + filename);
    } else {
    file_in = new File(pathname + File.separator + filename);
    }
    if (file_in.length() == 0) {
    System.out.println("上传文件为空!");
    return false;
    }   
        //产生随机数最大到99   
        j = (int)(Math.random()*100); 
        m_sfilename = String.valueOf(j) + ".pdf"; // 生成的文件名
    is = new FileInputStream(file_in);
    ftp.setFileType(FTP.BINARY_FILE_TYPE);
    ftp.storeFile(m_sfilename, is);
    ftp.logout();


    } finally {
    if (is != null) {
    is.close();
    }
    }
    System.out.println("上传文件成功!");
    return true;
    }


    public boolean delete(String filename) throws IOException {

    FileInputStream is = null;
    boolean retValue = false;
    try {
    retValue = ftp.deleteFile(filename);
    ftp.logout();
    } finally {
    if (is != null) {
    is.close();
    }
    }
    return retValue;

    } public void close() {
    if (ftp.isConnected()) {
    try {
    ftp.disconnect();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    } public static int FormatStringToInt(String p_String) {
    int intRe = 0;
    if (p_String != null) {
    if (!p_String.trim().equals("")) {
    try {
    intRe = Integer.parseInt(p_String);
    } catch (Exception ex) { }
    }
    }
    return intRe;
    } public static String CheckNullString(String p_String) {
    if (p_String == null)
    return "";
    else
    return p_String;
    }

    public boolean downfile(String pathname, String filename) {

    String outputFileName = null;
    boolean retValue = false;
    try {
    FTPFile files[] = ftp.listFiles();
    int reply = ftp.getReplyCode(); ////////////////////////////////////////////////
    if (!FTPReply.isPositiveCompletion(reply)) {
    try {
    throw new Exception("Unable to get list of files to dowload.");
    } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }

    /////////////////////////////////////////////////////
    if (files.length == 0) {
     System.out.println("No files are available for download.");
    }else {
     for (int i=0; i<files.length; i++) {
     System.out.println("Downloading file "+files[i].getName()+"Size:"+files[i].getSize());
     outputFileName = pathname + filename + ".pdf";
     //return outputFileName;
     File f = new File(outputFileName);
     
     //////////////////////////////////////////////////////
     retValue = ftp.retrieveFile(outputFileName, new FileOutputStream(f));
     
      if (!retValue) {
      try {
    throw new Exception ("Downloading of remote file"+files[i].getName()+" failed. ftp.retrieveFile() returned false.");
    } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
      }
     
    }
    }
     
    /////////////////////////////////////////////////////////////
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    return retValue;
    }

    }
    用这个例子吧.测试通过的