當前位置:首頁 » 文件管理 » java文件上傳下載

java文件上傳下載

發布時間: 2022-01-28 16:56:48

java如何實現文件上傳和下載的功能

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.jspsmart.upload.*;
import net.sf.json.JSONObject;
import action.StudentAction;
public class UploadServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
boolean result=true;
SmartUpload mySmartUpload=new SmartUpload();
mySmartUpload.initialize(this.getServletConfig(), request,response);
mySmartUpload.setTotalMaxFileSize(50*1024*1024);//大小限制
mySmartUpload.setAllowedFilesList("doc,docx");//後綴名限制
try {
mySmartUpload.upload();
com.jspsmart.upload.File myFile = mySmartUpload.getFiles().getFile(0);
myFile.saveAs("/file/"+1+".doc");//保存目錄
} catch (SmartUploadException e) {
e.printStackTrace();result=false;
}
//*****************************//
response.setContentType("text/html;charset=UTF-8");
response.setHeader("Cache-Control","no-cache");
PrintWriter out = response.getWriter();
out.print(result);
out.flush();
out.close();
}
}

//我這是ajax方式的,不想這樣,把//**********************//以下部分修改就行了
//需要SmartUpload組件,去網上下個就行了,也有介紹的

㈡ 用java實現文件的上傳與下載

1.下載簡單,無非是把伺服器上的文件或者資料庫中的BLob(或其他二進制型),用流讀出來,然後寫到客戶端即可,要注意 ContentType。

2.上傳,可以用Apache Commons Upload等開源工具,或者自己寫:
form要用enctype="multipart/form-data"
然後伺服器端也是用IO把客戶端提交的文件流讀入,然後寫到伺服器的文件系統或者資料庫里。不同的資料庫對Lob欄位操作可能有所不同,建議用Hibernate,JPA等成熟的ORM框架,可以不考慮資料庫細節。

㈢ JAVA文件上傳及下載。

其實都差不多啦,J2ME沒太有人搞了,基本都是JSP
後台的話就是用了FileInputStream和FileOutputStream,傳個路徑就可以了。
有些文件格式需要使用位元組流來傳輸,這個自己試試就知道了。

㈣ Java 批量大文件上傳下載如何實現

解決這種大文件上傳不太可能用web上傳的方式,只有自己開發插件或是當門客戶端上傳,或者用現有的ftp等。
1)開發一個web插件。用於上傳文件。
2)開發一個FTP工具,不用web上傳。
3)用現有的FTP工具。
下面是幾款不錯的插件,你可以試試:
1)Jquery的uploadify插件。具體使用。你可以看幫助文檔。

㈤ java 實現文件批量上傳下載實現方法 以及優勢缺點

File file = new File(path);
BufferedReader reader = null;
try {
reader = new BufferedReader(new FileReader(file));
String tempString = null;
StringBuffer buffer = new StringBuffer();
while ((tempString = reader.readLine()) != null) {
buffer.append(tempString);
}
reader.close();
return buffer.toString();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e1) {

}
}
}
return null;

㈥ java實現文件的上傳和下載

用輸出流 接受 一個下載地址的網路流
然後將這個輸出流 保存到本地一個文件 後綴與下載地址的後綴相同··

上傳的話 將某個文件流 轉成位元組流 上傳到某個webservice方法里

-------要代碼來代碼

URL url=new URL("http://www..com/1.rar");
URLConnection uc=url.openConnection();
InputStream in=uc.getInputStream();
BufferedInputStream bis=new BufferedInputStream(in);
FileOutputStream ft=new FileOutputStream("E://1.rar");

這是下載 上傳太麻煩就不給寫了

㈦ JAVA 上傳下載文件

Java代碼實現文件上傳
FormFilefile=manform.getFile();
StringnewfileName=null;
Stringnewpathname=null;
StringfileAddre="/numUp";
try{
InputStreamstream=file.getInputStream();//把文件讀入
StringfilePath=request.getRealPath(fileAddre);//取系統當前路徑
Filefile1=newFile(filePath);//添加了自動創建目錄的功能
((File)file1).mkdir();
newfileName=System.currentTimeMillis()
+file.getFileName().substring(
file.getFileName().lastIndexOf('.'));
ByteArrayOutputStreambaos=newByteArrayOutputStream();
OutputStreambos=newFileOutputStream(filePath+"/"
+newfileName);
newpathname=filePath+"/"+newfileName;
System.out.println(newpathname);
//建立一個上傳文件的輸出流
System.out.println(filePath+"/"+file.getFileName());
intbytesRead=0;
byte[]buffer=newbyte[8192];
while((bytesRead=stream.read(buffer,0,8192))!=-1){
bos.write(buffer,0,bytesRead);//將文件寫入伺服器
}
bos.close();
stream.close();
}catch(FileNotFoundExceptione){
e.printStackTrace();
}catch(IOExceptione){
e.printStackTrace();
}

㈧ 如何利用位元組流實現java的文件上傳下載

實現上傳下載實際上就是io的轉換。舉例:
import hkrt.b2b.view.util.Log;
import hkrt.b2b.view.util.ViewUtil;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;

import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;

public class CCFCCBFTP {

/**
* 上傳文件
*
* @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);
}
}
}

}

/**
*下載文件
*
* @param localFilePath
* @param fileName
* @param routeFilepath
* @return
* @throws Exception
*/
public static String fileDownloadByFtp(String localFilePath, String fileName,String routeFilepath) throws Exception {
FileInputStream fis = null;
ByteArrayOutputStream bos = null;
FileOutputStream fos = null;
FTPClient ftpClient = new FTPClient();
String SFP = System.getProperty("file.separator");
String bl = "false";
try {
Log.info("下載並解密文件開始");
Log.info("連接遠程下載伺服器"+CCFCCBUtil.CCFCCBHOSTNAME+":"+22);
ftpClient.connect(CCFCCBUtil.CCFCCBHOSTNAME, 22);
ftpClient.login(CCFCCBUtil.CCFCCBLOGINNAME, CCFCCBUtil.CCFCCBLOGINPASSWORD);
// ftpClient.connect(CMBCUtil.CMBCHOSTNAME, 2021);
// ftpClient.login(CMBCUtil.CMBCLOGINNAME, CMBCUtil.CMBCLOGINPASSWORD);
FTPFile[] fs;

ftpClient.makeDirectory(routeFilepath);
ftpClient.changeWorkingDirectory(routeFilepath);
bl = "false";
fs = ftpClient.listFiles();
for (FTPFile ff : fs) {
if (ff.getName().equals(fileName)) {
bl = "true";
Log.info("下載文件開始。");
ftpClient.setBufferSize(1024);
// 設置文件類型(二進制)
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
InputStream is = ftpClient.retrieveFileStream(fileName);
bos = new ByteArrayOutputStream(is.available());
byte[] buffer = new byte[1024];
int count = 0;
while ((count = is.read(buffer)) != -1) {
bos.write(buffer, 0, count);
}
bos.flush();
fos = new FileOutputStream(localFilePath+SFP+fileName);
fos.write(bos.toByteArray());
Log.info("下載文件結束:"+localFilePath);
}
}
Log.info("檢查文件是否存:"+fileName+" "+bl);
if("false".equals(bl)){
ViewUtil.dataSEErrorPerformedCommon("查詢無結果,請稍後再查詢。");
return bl;
}
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);
}
}
if (fos != null) {
try {
fos.close();
} catch (Exception e) {
Log.info(e.getLocalizedMessage(), e);
}
}
}
}}
備註:以上方法就實現了流的二進制上傳下載轉換,只需要將伺服器連接部分調整為本地的實際ftp服務用戶名和密碼即可。

㈨ java文件上傳下載用哪種技術好

用commons-fileupload實現的上傳文件同時提交form中的參數

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
final long MAX_SIZE = 3 * 1024 * 1024;// 設置上傳文件最大為 3M
// 允許上傳的文件格式的列表
final String[] allowedExt = new String[] { "jpg", "jpeg", "gif","png" };

response.setContentType("text/html");
// 設置字元編碼為UTF-8, 這樣支持漢字顯示
// response.setCharacterEncoding("GBK");

// 實例化一個硬碟文件工廠,用來配置上傳組件ServletFileUpload
DiskFileItemFactory dfif = new DiskFileItemFactory();
dfif.setSizeThreshold(4096);// 設置上傳文件時用於臨時存放文件的內存大小,這里是4K.多於的部分將臨時存在硬碟
dfif.setRepository(new File(request.getRealPath("/")
+ "ImagesUploadTemp"));// 設置存放臨時文件的目錄,web根目錄下的ImagesUploadTemp目錄

// 用以上工廠實例化上傳組件
ServletFileUpload sfu = new ServletFileUpload(dfif);
// 設置最大上傳尺寸
sfu.setSizeMax(MAX_SIZE);

PrintWriter out = response.getWriter();
// 從request得到 所有 上傳域的列表
List fileList = null;
try {
fileList = sfu.parseRequest(request);
} catch (FileUploadException e) {// 處理文件尺寸過大異常
if (e instanceof SizeLimitExceededException) {
out.print("<script>alert('文件尺寸超過規定大小:" + MAX_SIZE
+ "位元組');history.back();</script>");
return;
}
e.printStackTrace();
}
// 沒有文件上傳
if (fileList == null || fileList.size() == 0) {
out.print("<script>alert('請選擇上傳文件!');history.back();</script>");
return;
}
HashMap<String, String> paramMap = new HashMap<String, String>();
// 得到所有上傳的文件
Iterator fileItr = fileList.iterator();
// 循環處理所有文件
FileItem fileUp= null;
String path = null;
while (fileItr.hasNext()) {
FileItem fileItem = null;
long size = 0;
// 得到當前文件
fileItem = (FileItem) fileItr.next();
// 忽略簡單form欄位而不是上傳域的文件域(<input type="text" />等)
if (fileItem == null || fileItem.isFormField()) {
String formname=fileItem.getFieldName();//獲取form中的名字
String formcontent=fileItem.getString();
formname=new String(formname.getBytes(),"GBK");
formcontent=new String(formcontent.getBytes(),"GBK");
paramMap.put(formname, formcontent);
}
else{
//得到放文件的item
fileUp= fileItem;
// 得到文件的完整路徑
path = fileItem.getName();
// 得到文件的大小
size = fileItem.getSize();
if ("".equals(path) || size == 0) {
out.print("<script>alert('請選擇上傳文件!');history.back();</script>");
return;
}

}

}
// 得到去除路徑的文件名
String t_name = path.substring(path.lastIndexOf("\\") + 1);
// 得到文件的擴展名(無擴展名時將得到全名)
String t_ext = t_name.substring(t_name.lastIndexOf(".") + 1);
// 拒絕接受規定文件格式之外的文件類型
int allowFlag = 0;
int allowedExtCount = allowedExt.length;
for (; allowFlag < allowedExtCount; allowFlag++) {
if (allowedExt[allowFlag].equals(t_ext))
break;
}
if (allowFlag == allowedExtCount) {
StringBuffer sb = new StringBuffer();
for (allowFlag = 0; allowFlag < allowedExtCount; allowFlag++)
sb.append("*." + allowedExt[allowFlag]);
out.println("<script>alert('請上傳以下類型的文件" + sb.toString()
+ "');history.back();</script>");
return;
}
long now = System.currentTimeMillis();
// 根據系統時間生成上傳後保存的文件名
String prefix = String.valueOf(now);
// 保存的最終文件完整路徑,保存在web根目錄下的ImagesUploaded目錄下
String u_name = request.getRealPath("/") + "ImagesUploaded/"
+ prefix + "." + t_ext;
// 相對項目路徑
String file_url = request.getContextPath() + "/"
+ "ImagesUploaded/" + prefix + "." + t_ext;
try {
// 保存文件
fileUp.write(new File(u_name));
out.println("<script type='text/javascript'>parent.KE.plugin[\"image\"].insert('" +paramMap.get("id")
+ "', '" + file_url + "','" +paramMap.get("imgWidth") + "','"
+paramMap.get("imgHeight") + "','" +paramMap.get("imgBorder") + "','" +paramMap.get("imgTitle")
+ "')</script>");

} catch (Exception e) {
e.printStackTrace();
}

㈩ 怎麼樣用JAVA 實現文件的上傳下載

如果不涉及到資料庫的話,用簡單的IO流即可實現。上傳的時候你指定好文件路徑或相對路徑,把上傳內容寫進一個生成的文件。下載的時候你去搜下要下載的文件名,把該文件的內容讀出來。
如果涉及資料庫的話你可以這樣做,用hibernate框架的情況下,你可以定義一個實體,實體里含有要下載的文件的標題,內容,這個文件儲存的路徑等欄位。上傳的時候將文件讀出來並賦值給這些欄位,然後存到資料庫中,並且將內容,標題等寫成String的類型存儲到資料庫中,下載的時候你可以去資料庫中搜這個路徑,存在即可把資料庫里的內容,標題等讀到本地的盤上並生成個文件即可。

熱點內容
vs修改源程序重新編譯 發布:2024-10-19 16:19:44 瀏覽:178
伺服器黑名單是什麼 發布:2024-10-19 16:18:12 瀏覽:439
rust如何開伺服器 發布:2024-10-19 16:10:04 瀏覽:833
flappybird源碼 發布:2024-10-19 15:56:31 瀏覽:538
java靜態代理 發布:2024-10-19 15:52:52 瀏覽:363
llvm編譯效率 發布:2024-10-19 15:34:55 瀏覽:47
樂視屏霸配置怎麼樣 發布:2024-10-19 15:34:51 瀏覽:447
pythontype判斷 發布:2024-10-19 15:33:57 瀏覽:414
java運行異常 發布:2024-10-19 15:28:14 瀏覽:814
c語言畫函數圖像 發布:2024-10-19 15:25:01 瀏覽:414