2013-07-03 33 views
0

我在通過FTP上傳文件到我的VPS(centos 6 64位)時遇到了一些麻煩。我正在使用的FTP被稱爲Pure-FTPD,並試圖使用Java上傳圖像。錯誤代碼我得到的是當通過FTP上傳文件到VPS時MalformedURLException

java.net.MalformedURLException:對於輸入字符串:在java.net.URL中的 「VPS經過此地 @ 9X.XXX.2XX.X8」 (來源不明) (Unknown Source) at java.net.URL。(Unknown Source) at FtpUrlUpload.main(FtpUrlUpload.java:25) 引起來自:java.lang.NumberFormatException:對於輸入字符串:「 VPS PASS HERE @ 9X.XXX.2XX.X8「 at java.lang.NumberFormatException.forInputString(Unknown Source) at java.lang.Integer.parseInt(Unknown Source) 在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:%[email protected]%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(); 
    } 
} 
} 

回答

0

我假設這是由於用戶名/密碼中的空格未被正確編碼? ()

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

+0

嘗試使用URI.toURL有一個在用戶名沒有空格/通過它的一個短語。你也可以在這行中使用URI.toURL():ftpUrl = String.format(ftpUrl,user,pass,host,uploadPath);爲用戶和通行證? – user2526311