1、javaweb 怎麼樣將本地文件傳輸到遠程伺服器
可以通過JDK自帶的API實現,如下代碼:
package com.cloudpower.util;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import sun.net.TelnetInputStream;
import sun.net.TelnetOutputStream;
import sun.net.ftp.FtpClient;
/**
* Java自帶的API對FTP的操作
* @Title:Ftp.java
*/
public class Ftp {
/**
* 本地文件名
*/
private String localfilename;
/**
* 遠程文件名
*/
private String remotefilename;
/**
* FTP客戶端
*/
private FtpClient ftpClient;
/**
* 伺服器連接
* @param ip 伺服器IP
* @param port 伺服器埠
* @param user 用戶名
* @param password 密碼
* @param path 伺服器路徑
* @date 2012-7-11
*/
public void connectServer(String ip, int port, String user,
String password, String path) {
try {
/* ******連接伺服器的兩種方法*******/
//第一種方法
// ftpClient = new FtpClient();
// ftpClient.openServer(ip, port);
//第二種方法
ftpClient = new FtpClient(ip);
ftpClient.login(user, password);
// 設置成2進制傳輸
ftpClient.binary();
System.out.println("login success!");
if (path.length() != 0){
//把遠程系統上的目錄切換到參數path所指定的目錄
ftpClient.cd(path);
}
ftpClient.binary();
} catch (IOException ex) {
ex.printStackTrace();
throw new RuntimeException(ex);
}
}
public void closeConnect() {
try {
ftpClient.closeServer();
System.out.println("disconnect success");
} catch (IOException ex) {
System.out.println("not disconnect");
ex.printStackTrace();
throw new RuntimeException(ex);
}
}
public void upload(String localFile, String remoteFile) {
this.localfilename = localFile;
this.remotefilename = remoteFile;
TelnetOutputStream os = null;
FileInputStream is = null;
try {
//將遠程文件加入輸出流中
os = ftpClient.put(this.remotefilename);
//獲取本地文件的輸入流
File file_in = new File(this.localfilename);
is = new FileInputStream(file_in);
//創建一個緩沖區
byte[] bytes = new byte[1024];
int c;
while ((c = is.read(bytes)) != -1) {
os.write(bytes, 0, c);
}
System.out.println("upload success");
} catch (IOException ex) {
System.out.println("not upload");
ex.printStackTrace();
throw new RuntimeException(ex);
} finally{
try {
if(is != null){
is.close();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if(os != null){
os.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public void download(String remoteFile, String localFile) {
TelnetInputStream is = null;
FileOutputStream os = null;
try {
//獲取遠程機器上的文件filename,藉助TelnetInputStream把該文件傳送到本地。
is = ftpClient.get(remoteFile);
File file_in = new File(localFile);
os = new FileOutputStream(file_in);
byte[] bytes = new byte[1024];
int c;
while ((c = is.read(bytes)) != -1) {
os.write(bytes, 0, c);
}
System.out.println("download success");
} catch (IOException ex) {
System.out.println("not download");
ex.printStackTrace();
throw new RuntimeException(ex);
} finally{
try {
if(is != null){
is.close();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if(os != null){
os.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public static void main(String agrs[]) {
String filepath[] = { "/temp/aa.txt", "/temp/regist.log"};
String localfilepath[] = { "C:\\tmp\\1.txt","C:\\tmp\\2.log"};
Ftp fu = new Ftp();
/*
* 使用默認的埠號、用戶名、密碼以及根目錄連接FTP伺服器
*/
fu.connectServer("127.0.0.1", 22, "anonymous", "IEUser@", "/temp");
//下載
for (int i = 0; i < filepath.length; i++) {
fu.download(filepath[i], localfilepath[i]);
}
String localfile = "E:\\號碼.txt";
String remotefile = "/temp/哈哈.txt";
//上傳
fu.upload(localfile, remotefile);
fu.closeConnect();
}
}
2、java文件上傳時,web客戶端選擇文件後發送請求到後台。可是web客戶端發送到後台的是文件路徑還是文件流?
當然直接傳遞文件流。
你說的那種情況是傳遞請求參數。當然你也可以根據請求的參數拿到這個路徑,你還得根據這個路徑發送請求給客戶端,然後讀取這個文件,這不很麻煩嗎?
3、java web 本地端上傳文件到伺服器端
Web文件來上傳採用POST的方式,與POST提交表單不同源的是,上傳文件需要設置FORM的enctype屬性為multipart/form-data.由於上傳的文件會比較大,因此需要設置該參數指定瀏覽器使用二進制上傳。如果不設置,enctype屬性默認為application/x-www-form-urlencoded,使用瀏覽器將使用ASCII向伺服器發送數據,導致發送文件失敗。
上傳文件要使用文件域(<input type='file'/>,並把FORM的Enctype設置為multipart/form-data.
4、怎樣上傳文件到java web項目中,而不是tomcat伺服器中
你這是copy要逆天啊...你項目部署在伺服器裡面,直接保存肯定只能保存在伺服器的項目下面,如果你要保存在伺服器外的項目文件夾,那就等於用絕對地址直接寫文件到硬碟上對應地點,創建file對象的時候寫好地址,然後輸出文件唄...
5、JAVA 把文件傳到伺服器.......
文件上傳到A以後 放到伺服器上面 然後他就有一個絕對的訪問路徑 也就是對應一個絕對的url 這樣就好辦了
Java提供了對URL訪問和大量的流操作的的API,可以很容易的完成對網路上資源的存取,下面的代碼段就完成了對一個網站的資源進行訪問:
......
destUrl="http://www.yourweb.com/java/Afile.zip";
//假設你把文件放到webroot底下的java文件裡面
url = new URL(destUrl);
httpUrl = (HttpURLConnection) url.openConnection();
//連接指定的網路資源
httpUrl.connect();
//獲取網路輸入流
bis = new BufferedInputStream(httpUrl.getInputStream());
......
得到流後下面你自己想怎麼操作就怎麼操作了
對於怎麼得到資源的連接地址這個方法很多 你可以專門提供一個Servlet 獲取到輸出的流後 Response.write轉門提供伺服器已上傳的文件 文件名可以一天位單位返回
客戶端用與上面同樣的方法得到文件名後 拆分 然後再繼續循環調用上面的方法 下載文件就ok了
呵呵 希望可以幫助到你
6、如何通過Java客戶端程序通過rest介面訪問並上傳文件(文檔)到web伺服器?
圖片目錄不在項目路徑下,直接通過HTTP訪問不到,如果你硬是要這么訪問,你可以自己寫一個Servlet,通過流的方式輸出,注意要吧Content-Type設置正確
7、JAVA WEB文件上傳步驟
JAVA WEB文件上傳步驟如下:
實現 Web 開發中的文件上傳功能,兩個操作:在 Web 頁面添加上傳輸入項,在 Servlet 中讀取上傳文件的數據並保存在本地硬碟中。
1、Web 端上傳文件。在 Web 頁面中添加上傳輸入項:<input type="file"> 設置文件上傳輸入項時應注意:(1) 必須設置 input 輸入項的 name 屬性,否則瀏覽器將不會發送上傳文件的數據。(2) 必須把 form 的 enctype 屬性設為 multipart/form-data,設置該值後,瀏覽器在上傳文件時,將把文件數據附帶在 http 請求消息體中,並使用 MIME 協議對上傳文件進行描述,以方便接收方對上傳數據進行解析和處理。(3) 表單提交的方式要是 post
2、伺服器端獲取文件。如果提交表單的類型為 multipart/form-data 時,就不能採用傳統方式獲取數據。因為當表單類型為 multipart/form-data 時,瀏覽器會將數據以 MIME 協議的形式進行描述。如果想在伺服器端獲取數據,那麼我們必須採用獲取請求消息輸入流的方式來獲取數據。
3、Apache-Commons-fileupload。為了方便用戶處理上傳數據,Apache 提供了一個用來處理表單文件上傳的開源組建。使用 Commons-fileupload 需要 Commons-io 包的支持。
4、fileuplpad 組建工作流程
(1)客戶端將數據封裝在 request 對象中。
(2)伺服器端獲取到 request 對象。
(3)創建解析器工廠 DiskFileItemFactory 。
(4)創建解析器,將解析器工廠放入解析器構造函數中。之後解析器會對 request 進行解析。
(5)解析器會將每個表單項封裝為各自對應的 FileItem。
(6)判斷代表每個表單項的 FileItem 是否為普通表單項 isFormField,返回 true 為普通表單項。
(7)如果是普通表單項,通過 getFieldName 獲取表單項名,getString 獲得表單項值。
(8)如果 isFormField 返回 false 那麼是用戶要上傳的數據,可以通過 getInputStream 獲取上傳文件的數據。通過getName 可以獲取上傳的文件名。
8、用java開發的WEB 項目實現從本地伺服器上傳一個文件到C伺服器,中間要經過B伺服器,請問我怎麼實現呢?
可以啊。方法太多了 方案 A只用ftp A把文件 FTP給B B做一個服務每分鍾掃描一次ftp目錄出現新文件 並且文件可以讀的話 B再把文件ftp給C
直接用TCP 如果 socket熟練的話就更省事兒了 A 直接socket連上B 把文件發送過去,B直接把接收的數據轉發給 C接收後保存。
根據需要和環境組合使用比較好。