java上傳,java上傳下載文件

本文目錄一覽:

java文件上傳到伺服器有什麼影響

java文件上傳到伺服器沒有什麼影響。存儲方式改變了以及存儲的文件夾會有改變,要注意存儲的文件夾名稱。Java是一種可以撰寫跨平台應用軟體的面向對象的程序設計語言,廣泛應用。

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;tempERRORTYPE.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+” “);

      }

。。。。。。

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

java中怎樣上傳文件

Java代碼實現文件上傳

FormFile file=manform.getFile(); 

  String newfileName = null;

  String newpathname=null;

  String fileAddre=”/numUp”;

  try {

   InputStream stream = file.getInputStream();// 把文件讀入

    String filePath = request.getRealPath(fileAddre);//取系統當前路徑

          File file1 = new File(filePath);//添加了自動創建目錄的功能

       ((File) file1).mkdir();   

    newfileName = System.currentTimeMillis()

     + file.getFileName().substring(

       file.getFileName().lastIndexOf(‘.’));

   ByteArrayOutputStream baos = new ByteArrayOutputStream();

   OutputStream bos = new FileOutputStream(filePath + “/”

     + newfileName);

   newpathname=filePath+”/”+newfileName;

   System.out.println(newpathname);

   // 建立一個上傳文件的輸出流

    System.out.println(filePath+”/”+file.getFileName());

   int bytesRead = 0;

   byte[] buffer = new byte[8192];

   while ((bytesRead = stream.read(buffer, 0, 8192)) != -1) {

    bos.write(buffer, 0, bytesRead);// 將文件寫入伺服器

   }

   bos.close();

   stream.close();

    } catch (FileNotFoundException e) {

   e.printStackTrace();

  } catch (IOException e) {

   e.printStackTrace();

  }

java怎麼實現上傳附件的功能

上傳附件,實際上就是將文件存儲到遠程伺服器,進行臨時存儲。舉例:

**

* 上傳文件

*

* @param fileName

* @param plainFilePath 文件路徑路徑

* @param filepath

* @return

* @throws Exception

*/

public static String fileUploadByFtp(String plainFilePath, String fileName, String filepath) throws Exception {

FileInputStream fis = null;

ByteArrayOutputStream bos = null;

FTPClient ftpClient = new FTPClient();

String bl = “false”;

try {

fis = new FileInputStream(plainFilePath);

bos = new ByteArrayOutputStream(fis.available());

byte[] buffer = new byte[1024];

int count = 0;

while ((count = fis.read(buffer)) != -1) {

bos.write(buffer, 0, count);

}

bos.flush();

Log.info(“加密上傳文件開始”);

Log.info(“連接遠程上傳伺服器”+CCFCCBUtil.CCFCCBHOSTNAME+”:”+22);

ftpClient.connect(CCFCCBUtil.CCFCCBHOSTNAME, 22);

ftpClient.login(CCFCCBUtil.CCFCCBLOGINNAME, CCFCCBUtil.CCFCCBLOGINPASSWORD);

FTPFile[] fs;

fs = ftpClient.listFiles();

for (FTPFile ff : fs) {

if (ff.getName().equals(filepath)) {

bl=”true”;

ftpClient.changeWorkingDirectory(“/”+filepath+””);

}

}

Log.info(“檢查文件路徑是否存在:/”+filepath);

if(“false”.equals(bl)){

ViewUtil.dataSEErrorPerformedCommon( “查詢文件路徑不存在:”+”/”+filepath);

return bl;

}

ftpClient.setBufferSize(1024);

ftpClient.setControlEncoding(“GBK”);

// 設置文件類型(二進位)

ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);

ftpClient.storeFile(fileName, fis);

Log.info(“上傳文件成功:”+fileName+”。文件保存路徑:”+”/”+filepath+”/”);

return bl;

} catch (Exception e) {

throw e;

} finally {

if (fis != null) {

try {

fis.close();

} catch (Exception e) {

Log.info(e.getLocalizedMessage(), e);

}

}

if (bos != null) {

try {

bos.close();

} catch (Exception e) {

Log.info(e.getLocalizedMessage(), e);

}

}

}

}

備註:只需要修改上傳的伺服器地址、用戶名、密碼即可進行伺服器訪問上傳。根據實際需要修改即可。

java如何實現文件上傳

public static int transFile(InputStream in, OutputStream out, int fileSize) {

int receiveLen = 0;

final int bufSize = 1000;

try {

byte[] buf = new byte[bufSize];

int len = 0;

while(fileSize – receiveLen bufSize)

{

len = in.read(buf);

out.write(buf, 0, len);

out.flush();

receiveLen += len;

System.out.println(len);

}

while(receiveLen fileSize)

{

len = in.read(buf, 0, fileSize – receiveLen);

System.out.println(len);

out.write(buf, 0, len);

receiveLen += len;

out.flush();

}

} catch (IOException e) {

// TODO 自動生成 catch 塊

e.printStackTrace();

}

return receiveLen;

}

這個方法從InputStream中讀取內容,寫到OutputStream中。

那麼發送文件方,InputStream就是FileInputStream,OutputStream就是Socket.getOutputStream.

接受文件方,InputStream就是Socket.getInputStream,OutputStream就是FileOutputStream。

就OK了。 至於存到資料庫里嘛,Oracle里用Blob。搜索一下,也是一樣的。從Blob能獲取一個輸出流。

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();

}

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/183621.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-25 05:47
下一篇 2024-11-25 05:47

相關推薦

發表回復

登錄後才能評論