【问题标题】:MalformedURLException when uploading file to VPS via FTP通过 FTP 将文件上传到 VPS 时出现 MalformedURLException
【发布时间】:2013-07-01 16:37:33
【问题描述】:

我在通过 FTP 将文件上传到我的 VPS(centos 6 64 位)时遇到了一些问题。我正在使用的 FTP 称为 Pure-FTPD,我正在尝试使用 Java 上传图像。我得到的错误代码是

java.net.MalformedURLException:对于输入字符串:“VPS PASS HERE@9X.XXX.2XX.X8” 在 java.net.URL.(未知来源) 在 java.net.URL.(未知来源) 在 java.net.URL.(未知来源) 在 FtpUrlUpload.main(FtpUrlUpload.java:25) 引起:java.lang.NumberFormatException:对于输入字符串:“VPS PASS HERE@9X.XXX.2XX.X8” 在 java.lang.NumberFormatException.forInputString(未知来源) 在 java.lang.Integer.parseInt(未知来源) 在 java.lang.Integer.parseInt(未知来源) 在 java.net.URLStreamHandler.parseURL(未知来源) ... 4 更多

这是我的完整代码。

import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.URL;
import java.net.URLConnection;

public class FtpUrlUpload {

private static final int BUFFER_SIZE = 4096;

public static void main(String[] args) {
    String ftpUrl = "ftp://%s:%s@%s/%s;type=i";
    String host = "9X.XXX.2XX.X8";
    String user = "VPS USERNAME HERE";
    String pass = "VPS PASS HERE";
    String filePath = "C:\\Users\\user\\desktop\\Untitled.png";
    String uploadPath = "public_html/Untitled.png";

    ftpUrl = String.format(ftpUrl, user, pass, host, uploadPath);
    System.out.println("Upload URL: " + ftpUrl);

    try {
        URL url = new URL(ftpUrl);
        URLConnection conn = url.openConnection();
        OutputStream outputStream = conn.getOutputStream();
        FileInputStream inputStream = new FileInputStream(filePath);

        byte[] buffer = new byte[BUFFER_SIZE];
        int bytesRead = -1;
        while ((bytesRead = inputStream.read(buffer)) != -1) {
            outputStream.write(buffer, 0, bytesRead);
        }

        inputStream.close();
        outputStream.close();

        System.out.println("File uploaded");
    } catch (IOException ex) {
        ex.printStackTrace();
    }
}
}

【问题讨论】:

    标签: java ftp vps uploading


    【解决方案1】:

    我假设这是由于用户名/密码中的空格编码不正确?

    尝试使用 URI.toURL()

    http://docs.oracle.com/javase/6/docs/api/java/net/URI.html

    【讨论】:

    • 用户名中没有空格/通过它是一个短语。你的意思是在 ftpUrl = String.format(ftpUrl, user, pass, host, uploadPath); 行中使用 URI.toURL()为用户和通过?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-01
    • 2016-12-14
    • 2012-04-26
    相关资源
    最近更新 更多