2011-05-22 55 views
0

我正在嘗試做一些上傳到我的網絡服務器。 我想上傳特定網站上的文件,就像所有的* .jpg文件一樣,所以我開始嘗試。這種代碼,使用FTP,URL和對象文件。如何使用Java將網址(http文件)上傳到我的網絡服務器?

UploaderDownloader up = new UploaderDownloader(); 
    URL url = new URL("http://i1.nyt.com/images/2011/05/22/magazine/22moth_cover/22moth_cover-moth.jpg"); 
    File file = new File(url.getFile()); 
    up.upload("127.0.0.1", "USER", "PASSWORD", "/testeUploader/132.jpg",file); 

但這不適用於我。 所以,我期待發現如何使用最佳選擇來實現這一點。 將不在我的電腦上的url文件上傳到網絡服務器。

+0

所以我認爲你需要在你的特定Java程序中使用它。因爲,如果您只是將文件傳輸到服務器,我強烈建議使用FTP客戶端,如FileZilla。如果沒有,並且您真的需要Java程序中的這個,請提供此UploaderDownloader類的文檔頁面。我似乎無法找到它。另請注意,「127.0.0.1」通常是本地主機。我相信你知道這一點,只是在那裏添加它。 – Vinay 2011-05-22 20:11:16

+0

url.getFile()沒有下載任何東西 – 2011-05-22 21:10:24

+0

好吧,我理解你的問題,但我的代碼只是一個我想要的樣本。 我正在執行這個程序來自動化我的工作。 這是UploaderDownloader類的鏈接。 [鏈接](http://www.javabeat.net/tips/36-file-upload-and-download-using-java.html) – 2011-05-22 22:23:32

回答

0

UploaderDownloader的源代碼在哪裏?通常情況下,如果沒有首先將文件下載到PC上,然後將其上傳到目標服務器,您就無法執行文件上傳。

有可能使用一些FTP設置來執行服務器到服務器的傳輸,或使用Dropbox或box.net等其他可用文件傳輸解決方案之一,但通常您要做的事情包括本地下載先進行文件上傳。對於HTTP下載和上傳,Apache HttpClient通常是選擇的庫:上傳部分請參見How can I make a multipart/form-data POST request using Java?,通用教程請參閱http://hc.apache.org/httpcomponents-client-ga/tutorial/html/

+0

這是一個UploaderDownloader類的鏈接。 [鏈接](http://www.javabeat.net/tips/36-file-upload-and-download-using-java.html) – 2011-05-22 22:34:14

+0

是的,該類是用於某些FTP設置:與HTTP上傳非常不同。我認爲你看到的是一個網站**將鏈接到另一個網站上的圖像(類似於你在這裏看到的),但它們並未從其他服務器複製圖像。 – Femi 2011-05-23 01:33:03

3

如果我理解你是正確的,你想從HTTP服務器上下載文件,然後將其上傳到FTP服務器。在這種情況下,根本不需要File對象。它只有在你想將它保存到本地磁盤文件系統時纔有用,但你似乎不需要它。您只需從HTTP服務器獲取文件的InputStream,然後將其發送到FTP服務器。

這裏是一個啓示的例子,如何從HTTP服務器獲取文件的味道InputStream

InputStream input = new URL("http://example.com/image.jpg").openStream(); 

簡單不是嗎?請確保您尊重相關網站的robots.txt,否則您可能會遭到IP禁止。

至於FTP'ing,基本的Java SE並沒有提供任何有用的API,因此我不知道你使用的FTP客戶端是什麼,因爲你的問題只包含本土和未公開的代碼,所以這裏只是一個例子與Apache Commons NetFTPClient

FTPClient ftp = new FTPClient(); 
ftp.connect("ftp.example.com"); 
ftp.login("username", "password"); 
ftp.storeFile("image.jpg", input); // <-- Here, it's just InputStream. 
ftp.logout(); 

就是這樣。

+0

謝謝,但似乎我想要的不是正常的,對嗎?! 有很多的web 2.0應用程序,你發送一個鏈接到你的圖片和automaticaly主機服務器的web應用程序記錄它。 解決這個問題的最佳解決方案是上面描述的? – 2011-05-22 22:42:58

+0

我還沒有說過這是不正常的。你的問題只是制定得很差,我已經做出了一些猜測來理解你真正需要的東西。術語「上傳URL」沒什麼意義,「HTTP文件」也是,「你的FTP服務器」的意思是「我的網絡服務器」也是令人困惑的,使用'java.io.File'和一個類名爲「 UploaderDownloader「使得它也不太清楚。但是現在,我現在的答案是你真正需要的嗎? :) – BalusC 2011-05-22 22:44:51

相關問題