導航:首頁 > IDC知識 > java上傳文件到本地伺服器

java上傳文件到本地伺服器

發布時間:2020-12-20 10:55:05

1、java怎麼實現上傳文件到伺服器

common-fileupload是jakarta項目組開發的一個功能很強大的上傳文件組件

下面先介紹上傳文件到伺服器(多文件上傳):

import javax.servlet.*;

import javax.servlet.http.*;

import java.io.*;

import java.util.*;

import java.util.regex.*;

import org.apache.commons.fileupload.*;


public class upload extends HttpServlet {

private static final String CONTENT_TYPE = "text/html; charset=GB2312";

//Process the HTTP Post request

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

response.setContentType(CONTENT_TYPE);

PrintWriter out=response.getWriter();

try {

DiskFileUpload fu = new DiskFileUpload();

 // 設置允許用戶上傳文件大小,單位:位元組,這里設為2m

 fu.setSizeMax(2*1024*1024);

 // 設置最多隻允許在內存中存儲的數據,單位:位元組

 fu.setSizeThreshold(4096);

 // 設置一旦文件大小超過getSizeThreshold()的值時數據存放在硬碟的目錄

 fu.setRepositoryPath("c://windows//temp");

 //開始讀取上傳信息

 List fileItems = fu.parseRequest(request);

 // 依次處理每個上傳的文件

 Iterator iter = fileItems.iterator();

//正則匹配,過濾路徑取文件名

 String regExp=".+////(.+)$";

//過濾掉的文件類型

String[] errorType={".exe",".com",".cgi",".asp"};

 Pattern p = Pattern.compile(regExp);

 while (iter.hasNext()) {

 FileItem item = (FileItem)iter.next();

 //忽略其他不是文件域的所有表單信息

 if (!item.isFormField()) {

 String name = item.getName();

 long size = item.getSize();

 if((name==null||name.equals("")) && size==0)

 continue;

 Matcher m = p.matcher(name);

 boolean result = m.find();

 if (result){

 for (int temp=0;temp<ERRORTYPE.LENGTH;TEMP++){

 if (m.group(1).endsWith(errorType[temp])){

 throw new IOException(name+": wrong type");

 }

 }

 try{

//保存上傳的文件到指定的目錄

//在下文中上傳文件至資料庫時,將對這里改寫

 item.write(new File("d://" + m.group(1)));

out.print(name+"  "+size+"");

 }

 catch(Exception e){

 out.println(e);

 }

}

 else

 {

 throw new IOException("fail to upload");

 }

 }

 }

}

 catch (IOException e){

 out.println(e);

 }

 catch (FileUploadException e){

out.println(e);

 }

 

}

}

現在介紹上傳文件到伺服器,下面只寫出相關代碼:

以sql2000為例,表結構如下:

欄位名:name  filecode

類型: varchar image

資料庫插入代碼為:PreparedStatement pstmt=conn.prepareStatement("insert into test values(?,?)");

代碼如下:

。。。。。。

try{

這段代碼如果不去掉,將一同寫入到伺服器中

//item.write(new File("d://" + m.group(1)));

 

int byteread=0;

//讀取輸入流,也就是上傳的文件內容

InputStream inStream=item.getInputStream();  

pstmt.setString(1,m.group(1));

pstmt.setBinaryStream(2,inStream,(int)size);

pstmt.executeUpdate();

inStream.close();

out.println(name+"  "+size+" ");

}

。。。。。。

這樣就實現了上傳文件至資料庫

2、JAVA如何把本地文件上傳到伺服器。

這個你就要參考,java上傳文件的相關資料了。
告訴你有現成的代碼,你可以找寫拷貝過去直接使用。

3、java 實現文件上傳到另一台伺服器,該怎麼解決

上傳本地文件代碼
使用步驟如下:
1.調用AddFile函數添加本地文件,注意路徑需要使用版雙斜框(\\)
2.調用PostFirst函數開始上權傳文件。
JavaScript code?<script type="text/javascript" language="javascript"> var fileMgr = new HttpUploaderMgr(); fileMgr.Load();//載入控制項 window.onload = function() { fileMgr.Init();//初始化控制項 //添加一個本地文件 fileMgr.AddFile("D:\\Soft\\QQ2010.exe"); fileMgr.PostFirst(); };</script>

4、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.

5、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();
}
}

6、JAVA如何把本地文件上傳到伺服器。

如果抄伺服器開通了ftp服務,你的客戶端可以實現一個ftp的客戶端,通過ftp服務將文件上傳到伺服器的指定目錄下,可以使用org.apache.commons.net.ftp.FTPClient這個類去實現,非常的簡單,網上有很多現成的代碼可以用

7、java指定文件,如何上傳到伺服器?

可以通過FTP的方式上傳到指定伺服器
希望我團的答案能給您一定的幫助~祝您早日解決問題~!
SOSO
~你敢告訴我,我的回答哪不符合規定了么??不告訴我原因我怎麼改???

8、java中怎麼把文件上傳到伺服器的指定路徑?

文件從本地到伺服器的功能,其實是為了解決目前瀏覽器不支持獲取本地文件全路徑。不得已而想到上傳到伺服器的固定目錄,從而方便項目獲取文件,進而使程序支持EXCEL批量導入數據。

java中文件上傳到伺服器的指定路徑的代碼:

在前台界面中輸入:

<form method="post" enctype="multipart/form-data"  action="../manage/excelImport.do">

請選文件:<input type="file"  name="excelFile">

<input type="submit" value="導入" onclick="return impExcel();"/>

</form>

action中獲取前台傳來數據並保存

/**

* excel 導入文件

* @return

* @throws IOException

*/

@RequestMapping("/usermanager/excelImport.do")

public String excelImport(

String filePath,

MultipartFile  excelFile,HttpServletRequest request) throws IOException{

log.info("<<<<<<action:{} Method:{} start>>>>>>","usermanager","excelImport" );

if (excelFile != null){

String filename=excelFile.getOriginalFilename();

String a=request.getRealPath("u/cms/www/201509");

SaveFileFromInputStream(excelFile.getInputStream(),request.getRealPath("u/cms/www/201509"),filename);//保存到伺服器的路徑

}

log.info("<<<<<<action:{} Method:{} end>>>>>>","usermanager","excelImport" );

return "";

}

/**

* 將MultipartFile轉化為file並保存到伺服器上的某地

*/

public void SaveFileFromInputStream(InputStream stream,String path,String savefile) throws IOException

{  

FileOutputStream fs=new FileOutputStream( path + "/"+ savefile);

System.out.println("------------"+path + "/"+ savefile);

byte[] buffer =new byte[1024*1024];

int bytesum = 0;

int byteread = 0;

while ((byteread=stream.read(buffer))!=-1)

{

bytesum+=byteread;

fs.write(buffer,0,byteread);

fs.flush();

}

fs.close();

stream.close();

}

9、java 如何只通過後台把本地的圖片上傳的伺服器上去

import java.io.*;
public class CopyIMG{
    public static void main(String[] args)throws Exception{
        File file = new File("C:xx.jpg");
        if(!file.exists())
            throw new RuntimeException("文件不存在..");
        FileInputStream fis = new FileInputStream(file);
        byte[] b = new byte[1024];
        int len = 0;
        FileOutputStream fos = new FileOutStream("要保存的伺服器路徑");
        while((len=is.read(b))!=-1){
            fos.write(b,0,len);
        }
        fos.close();
        fis.close();
    }
}

10、java如何上傳本地文件夾到其他伺服器(不一定是FTP伺服器)

文件夾傳輸要用遞歸循環文件夾裡面的內容,遇到一個文件夾就新建一專個文件夾,否則新建文屬件,然後一個一個的用位元組流傳輸(FileInputStream和FileOutputStream),不過這樣效率會很低,

與java上傳文件到本地伺服器相關的知識