當前位置:首頁 » 文件管理 » javaio文件上傳

javaio文件上傳

發布時間: 2024-02-26 22:11:41

java實現文件上傳,代碼盡量簡潔~~~~~·

你說的2種方法都是很簡單的,參考網上的資料都不難做出,用io流做更是基礎中的基礎,我說下smartupload好了,有的人是直接寫在jsp上面,感覺比較亂,我一般都是寫在action裡面,打好jar包和配置後

SmartUpload mySmartUpload = new SmartUpload();

//如果是struts2.0或者webwork 則是mySmartUpload.initialize(ServletActionContext.getServletConfig(),ServletActionContext.getRequest(),ServletActionContext.getResponse());

mySmartUpload.initialize(servlet.getServletConfig(), request,response);
mySmartUpload.setTotalMaxFileSize(500000);
//如果上傳任意文件不設置mySmartUpload.setAllowedFilesList(文件後綴名)就可以了
mySmartUpload.upload();
for (int i = 0; i < mySmartUpload.getFiles().getCount(); i++) {
com.jspsmart.upload.File file = mySmartUpload.getFiles().getFile(i);
if (file.isMissing()) continue;
file.saveAs(保存的地址 + file.getFileName(),
su.SAVE_PHYSICAL);

❷ java 項目開發 實現上傳視頻。

上傳視頻?只是上傳的話,相當於,上傳文件了
html如下
<form action="MultipartTestServlet" enctype="multipart/form-data" method="post">
<input type="text" name="username" /><br />
<input type="file" name="myfile" /><br/>
<input type="submit" />
</form>

java如下
MultipartTestServlet.java

package com.bug.servlet;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUpload;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.RequestContext;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.fileupload.servlet.ServletRequestContext;

public class MultipartTestServlet extends HttpServlet {

public MultipartTestServlet() {
super();
}

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

request.setCharacterEncoding("gbk");
RequestContext requestContext = new ServletRequestContext(request);

if(FileUpload.isMultipartContent(requestContext)){

DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setRepository(new File("c:/tmp/"));
ServletFileUpload upload = new ServletFileUpload(factory);
//upload.setHeaderEncoding("gbk");
upload.setSizeMax(2000000);
List items = new ArrayList();
try {
items = upload.parseRequest(request);
} catch (FileUploadException e1) {
System.out.println("文件上傳發生錯誤" + e1.getMessage());
}

Iterator it = items.iterator();
while(it.hasNext()){
FileItem fileItem = (FileItem) it.next();
if(fileItem.isFormField()){
System.out.println(fileItem.getFieldName() + " " + fileItem.getName() + " " + new String(fileItem.getString().getBytes("iso8859-1"), "gbk"));
}else{
System.out.println(fileItem.getFieldName() + " " +
fileItem.getName() + " " +
fileItem.isInMemory() + " " +
fileItem.getContentType() + " " +
fileItem.getSize());

if(fileItem.getName()!=null && fileItem.getSize()!=0){
File fullFile = new File(fileItem.getName());
File newFile = new File("c:/temp/" + fullFile.getName());
try {
fileItem.write(newFile);
} catch (Exception e) {
e.printStackTrace();
}
}else{
System.out.println("文件沒有選擇 或 文件內容為空");
}
}

}
}
}

}
web.xml中加入

<servlet>
<servlet-name>MultipartTestServlet</servlet-name>
<servlet-class>com.bug.servlet.MultipartTestServlet</servlet-class>
</servlet>

需要的包到這三個地方下載
http://jakarta.apache.org/commons/fileupload/下載
http://jakarta.apache.org/commons/io/下載
在http://www.servlets.com/cos/下載

關於視頻的播放,你只能自己再去找了

❸ java 實現文件上傳不超過5m 怎樣實現

個人覺得是上傳的文件相對較大需要一定的時間,取消功能可能指用戶上傳到一半的時候可以選擇停止上傳。實現方法參考:上傳文件io傳輸時必然有循環,在循環中設置監聽變數,每次循環前都判斷下該變數是否為true,若不是return/結束程序。當提交取消功能時設置監聽變數為false,其間可能會設計到多線程問題,要好好考慮。

❹ java 大文件上傳時 後台拋出了一個異常 java.io.IOException: Invalid chunk 求解決

盡量延長超時的時間 、、、、、、、一般這么大的文件,要分段上傳的了

~~~~~~~~

❺ java怎麼用commons-fileupload實現上傳文件

文件上傳步驟:
1.導入jar包
common-fileupload.jar
common-io.jar
2.上傳jsp頁面編輯
<body>
<formaction="${pageContext.request.contextPath}/servlet/UploadHandleServlet"enctype="multipart/form-data"method="post">
上傳用戶:<inputtype="text"name="username"><br/>
上傳文件1:<inputtype="file"name="file1"><br/>
上傳文件2:<inputtype="file"name="file2"><br/>
<inputtype="submit"value="提交">
</form>
</body>
3.消息提示頁面(成功or失敗)
<body>
${message}
</body>
4.處理文件上傳的servlet編寫
importjava.io.File;
importjava.io.FileOutputStream;
importjava.io.IOException;
importjava.io.InputStream;
importjava.util.List;
importjava.util.UUID;

importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importorg.apache.commons.fileupload.FileItem;
importorg.apache.commons.fileupload.FileUploadBase;
importorg.apache.commons.fileupload.ProgressListener;
importorg.apache.commons.fileupload.disk.DiskFileItemFactory;
importorg.apache.commons.fileupload.servlet.ServletFileUpload;

{

publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
//得到上傳文件的保存目錄,將上傳的文件存放於WEB-INF目錄下,不允許外界直接訪問,保證上傳文件的安全
StringsavePath=this.getServletContext().getRealPath("/WEB-INF/upload");
//上傳時生成的臨時文件保存目錄
StringtempPath=this.getServletContext().getRealPath("/WEB-INF/temp");
FiletmpFile=newFile(tempPath);
if(!tmpFile.exists()){
//創建臨時目錄
tmpFile.mkdir();
}

//消息提示
Stringmessage="";
try{
//使用Apache文件上傳組件處理文件上傳步驟:
//1、創建一個DiskFileItemFactory工廠
DiskFileItemFactoryfactory=newDiskFileItemFactory();
//設置工廠的緩沖區的大小,當上傳的文件大小超過緩沖區的大小時,就會生成一個臨時文件存放到指定的臨時目錄當中。
factory.setSizeThreshold(1024*100);//設置緩沖區的大小為100KB,如果不指定,那麼緩沖區的大小默認是10KB
//設置上傳時生成的臨時文件的保存目錄
factory.setRepository(tmpFile);
//2、創建一個文件上傳解析器
ServletFileUploapload=newServletFileUpload(factory);
//監聽文件上傳進度
upload.setProgressListener(newProgressListener(){
publicvoipdate(longpBytesRead,longpContentLength,intarg2){
System.out.println("文件大小為:"+pContentLength+",當前已處理:"+pBytesRead);
/**
*文件大小為:14608,當前已處理:4096
文件大小為:14608,當前已處理:7367
文件大小為:14608,當前已處理:11419
文件大小為:14608,當前已處理:14608
*/
}
});
//解決上傳文件名的中文亂碼
upload.setHeaderEncoding("UTF-8");
//3、判斷提交上來的數據是否是上傳表單的數據
if(!ServletFileUpload.isMultipartContent(request)){
//按照傳統方式獲取數據
return;
}

//設置上傳單個文件的大小的最大值,目前是設置為1024*1024位元組,也就是1MB
upload.setFileSizeMax(1024*1024);
//設置上傳文件總量的最大值,最大值=同時上傳的多個文件的大小的最大值的和,目前設置為10MB
upload.setSizeMax(1024*1024*10);
//4、使用ServletFileUpload解析器解析上傳數據,解析結果返回的是一個List<FileItem>集合,每一個FileItem對應一個Form表單的輸入項
List<FileItem>list=upload.parseRequest(request);
for(FileItemitem:list){
//如果fileitem中封裝的是普通輸入項的數據
if(item.isFormField()){
Stringname=item.getFieldName();
//解決普通輸入項的數據的中文亂碼問題
Stringvalue=item.getString("UTF-8");
//value=newString(value.getBytes("iso8859-1"),"UTF-8");
System.out.println(name+"="+value);
}else{//如果fileitem中封裝的是上傳文件
//得到上傳的文件名稱,
Stringfilename=item.getName();
System.out.println(filename);
if(filename==null||filename.trim().equals("")){
continue;
}
//注意:不同的瀏覽器提交的文件名是不一樣的,有些瀏覽器提交上來的文件名是帶有路徑的,如:c:a1.txt,而有些只是單純的文件名,如:1.txt
//處理獲取到的上傳文件的文件名的路徑部分,只保留文件名部分
filename=filename.substring(filename.lastIndexOf("\")+1);
//得到上傳文件的擴展名
StringfileExtName=filename.substring(filename.lastIndexOf(".")+1);
//如果需要限制上傳的文件類型,那麼可以通過文件的擴展名來判斷上傳的文件類型是否合法
System.out.println("上傳的文件的擴展名是:"+fileExtName);
//獲取item中的上傳文件的輸入流
InputStreamin=item.getInputStream();
//得到文件保存的名稱
StringsaveFilename=makeFileName(filename);
//得到文件的保存目錄
StringrealSavePath=makePath(saveFilename,savePath);
//創建一個文件輸出流
FileOutputStreamout=newFileOutputStream(realSavePath+"\"+saveFilename);
//創建一個緩沖區
bytebuffer[]=newbyte[1024];
//判斷輸入流中的數據是否已經讀完的標識intlen=0;
//循環將輸入流讀入到緩沖區當中,(len=in.read(buffer))>0就表示in裡面還有數據
while((len=in.read(buffer))>0){
//使用FileOutputStream輸出流將緩沖區的數據寫入到指定的目錄(savePath+"\"+filename)當中
out.write(buffer,0,len);
}
//關閉輸入流
in.close();
//關閉輸出流
out.close();//刪除處理文件上傳時生成的臨時文件//item.delete();message="文件上傳成功!";
}
}
}catch(FileUploadBase.){
e.printStackTrace();
request.setAttribute("message","單個文件超出最大值!!!");
request.getRequestDispatcher("/message.jsp").forward(request,response);
return;
}catch(FileUploadBase.SizeLimitExceededExceptione){
e.printStackTrace();
request.setAttribute("message","上傳文件的總的大小超出限制的最大值!!!");
request.getRequestDispatcher("/message.jsp").forward(request,response);
return;
}catch(Exceptione){
message="文件上傳失敗!";
e.printStackTrace();
}
request.setAttribute("message",message);
request.getRequestDispatcher("/message.jsp").forward(request,response);
}
privateStringmakeFileName(Stringfilename){//2.jpg
//為防止文件覆蓋的現象發生,要為上傳文件產生一個唯一的文件名
returnUUID.randomUUID().toString()+"_"+filename;
}
privateStringmakePath(Stringfilename,StringsavePath){
//得到文件名的hashCode的值,得到的就是filename這個字元串對象在內存中的地址
inthashcode=filename.hashCode();
intdir1=hashcode&0xf;//0--15
intdir2=(hashcode&0xf0)>>4;//0-15
//構造新的保存目錄
Stringdir=savePath+"\"+dir1+"\"+dir2;//upload23upload35
if(!file.exists()){
file.mkdirs();
}
returndir;
}

publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
doGet(request,response);
}
}
5.編寫web.xml文件(servlet的映射配置)
<servlet>
<servlet-name>UploadHandleServlet</servlet-name>
<servlet-class>me.gacl.web.controller.UploadHandleServlet</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>UploadHandleServlet</servlet-name>
<url-pattern>/servlet/UploadHandleServlet</url-pattern>
</servlet-mapping>


註:網上看到的,出處找不到了,望見諒!!

❻ 如何用java程序實現上傳文件到指定的URL地址

參考代碼如下:
import java.io.*;
/**
* 復制文件夾或文件夾
*/
public class CopyDirectory {
// 源文件夾
static String url1 = "f:/photos";
// 目標文件夾
static String url2 = "d:/tempPhotos";
public static void main(String args[]) throws IOException {
// 創建目標文件夾
(new File(url2)).mkdirs();
// 獲取源文件夾當前下的文件或目錄
File[] file = (new File(url1)).listFiles();
for (int i = 0; i < file.length; i++) {
if (file[i].isFile()) {
// 復制文件
File(file[i],new File(url2+file[i].getName()));
}
if (file[i].isDirectory()) {
// 復制目錄
String sourceDir=url1+File.separator+file[i].getName();
String targetDir=url2+File.separator+file[i].getName();
Directiory(sourceDir, targetDir);
}
}
}
// 復制文件
public static void File(File sourceFile,File targetFile)
throws IOException{
// 新建文件輸入流並對它進行緩沖
FileInputStream input = new FileInputStream(sourceFile);
BufferedInputStream inBuff=new BufferedInputStream(input);

// 新建文件輸出流並對它進行緩沖
FileOutputStream output = new FileOutputStream(targetFile);
BufferedOutputStream outBuff=new BufferedOutputStream(output);

// 緩沖數組
byte[] b = new byte[1024 * 5];
int len;
while ((len =inBuff.read(b)) != -1) {
outBuff.write(b, 0, len);
}
// 刷新此緩沖的輸出流
outBuff.flush();

//關閉流
inBuff.close();
outBuff.close();
output.close();
input.close();
}
// 復制文件夾
public static void Directiory(String sourceDir, String targetDir)
throws IOException {
// 新建目標目錄
(new File(targetDir)).mkdirs();
// 獲取源文件夾當前下的文件或目錄
File[] file = (new File(sourceDir)).listFiles();
for (int i = 0; i < file.length; i++) {
if (file[i].isFile()) {
// 源文件
File sourceFile=file[i];
// 目標文件
File targetFile=new
File(new File(targetDir).getAbsolutePath()
+File.separator+file[i].getName());
File(sourceFile,targetFile);
}
if (file[i].isDirectory()) {
// 准備復制的源文件夾
String dir1=sourceDir + "/" + file[i].getName();
// 准備復制的目標文件夾
String dir2=targetDir + "/"+ file[i].getName();
Directiory(dir1, dir2);
}
}
}
}

熱點內容
如何做一個代理伺服器 發布:2025-01-20 00:18:39 瀏覽:803
android背單詞源碼 發布:2025-01-19 23:57:21 瀏覽:727
領動配置怎麼樣 發布:2025-01-19 23:56:35 瀏覽:83
python造數據 發布:2025-01-19 23:51:31 瀏覽:903
linux下卸載mysql 發布:2025-01-19 23:40:34 瀏覽:339
linuxweb路徑 發布:2025-01-19 23:25:08 瀏覽:941
福建電信伺服器ip地址 發布:2025-01-19 23:07:24 瀏覽:648
伺服器怎麼製作公告欄 發布:2025-01-19 23:06:23 瀏覽:874
英雄聯盟皮膚源碼 發布:2025-01-19 22:56:14 瀏覽:95
三星手機忘記解鎖密碼怎麼辦 發布:2025-01-19 22:45:43 瀏覽:292