javaweb實現文件上傳
⑴ javaweb實現圖片上傳(java中圖片文件上傳怎麼實現)
用java怎麼上傳圖片到項目指定的文件夾privateFilemyFile;//文件;//類型privateStringmyFileFileName;//文件名//。。
//使用formfile.getInputStream()來獲取一個文件的輸入流進行保存。
你使用的那個上傳組件啊?struts2默認提供的那個?common-file-upload?要是使用的是struts使用域驅動模式在文件名上使用*File就行啊,然後你徑讀取就行了啊。
javaWeb如何實現想QQ空間圖片預覽的效果以及圖片批量上傳?最好有...
引入資源使用WebUploader文件上傳需要引入三種資源:JS,CSS,SWF。
JAVAWEB文件上傳步驟如下:實現Web開發中的文件上傳功能,兩個操作:在Web頁面添加上傳輸入項,在Servlet中讀取上傳文件的數據並保存在本地硬碟中。Web端上傳文件。
首先,打開自己的空間,看到導航欄上的相冊,點擊進入然後選擇上傳圖片,如果你還沒有創建過相冊,那先點擊新建相冊,建立一個相冊。然後就可以上傳圖片了,首先先說單張圖片的上傳。
javaWEB項目中如何實現批量選擇文件並上傳呢?有什麼好的插件,最好有...1)開發一個web插件。用於上傳文件。2)開發一個ftp工具,不用web上傳。3)用現有的FTP工具。下面是幾款不錯的插件,你可以試試:1)Jquery的uploadify插件。具體使用。你可以看幫助文檔。
1:點擊自定義。2:點擊右側的新建模塊→點擊圖片模塊。3:模塊名稱隨便,用一個空格最好,圖片地址上輸入圖片的地址,再點擊「更多設置」,只設置圖片的寬高度(以圖片的大小而定)就可以了,背景、邊框選擇無,確定保存。
據我的能力理解不太能同時實現。我講下我的實現思路:1,你有一台作為接收,文件上傳至此,得到file1;2,file1,輸出到另一台機器建議採用(ftp協議),至於是同步還是非同步執行無關緊要。3,其他邏輯。
javaweb實現自動上傳的功能,就是不用input的上傳,只知道文件的全路徑名...代碼是在客戶端運行的,你直接用newfile然後輸出流寫在伺服器的路徑裡面不就可以了嗎!伺服器路徑就是加ip的那種。
Web端上傳文件。在Web頁面中添加上傳輸入項:inputtype=file設置文件上傳輸入項時應注意:(1)必須設置input輸入項的name屬性,否則瀏覽器將不會發送上傳文件的數據。
必須設置input輸入項的name屬性,否則瀏覽器將不會發送上傳文件的數據。
java,web項目我想上傳一個rar壓縮文件,裡面有個excel和圖片。1、你要找不同文件的時候,如果文件比較少,像你說的只有兩個文件,你就按擴展名去判斷匹配就可以了。excel找xls,圖片找jpg或者png。
2、導出壓縮包壓縮包里有excel和照片解決方法如下:先需要將Excel另存為網頁。這時就會生成一個文件夾,裡面存放著全部圖片。更改Excel的後綴,變成壓縮文件,rar或者zip格式都可以。
3、要正確的將Web客戶端的Excel文件導入到伺服器的資料庫中,需要將客戶端的Excel文件上傳到伺服器上。可以使用FileUpload控制項完成。Excel文件上傳到伺服器指定的目錄中,這里假設是該站點的upfiles目錄中。
4、這個現在好像實現不了,以前也找過資料。沒有找到……,現在的思路是把rar改成圖片格式可以試試啊。
怎樣使用javaweb實現上傳視頻和下載功能?那上傳視頻就和普通的文件上傳一樣。都是通過Http上傳。前端可以使用form表單上傳也可以使用ajax非同步上傳。後台可以使用apache的Common-fileUpload工具來解析並保存文件。然後生成一個訪問路徑。
直接把大文件讀取為IO流,之後進行上傳下載即可,不用擔心文件大,是可以分流下載上傳的(setBufferSize(1024))。
下載簡單,無非是把伺服器上的文件或者資料庫中的BLob(或其他二進制型),用流讀出來,然後寫到客戶端即可,要注意ContentType。
java上傳可以使用common-fileupload上傳組件的。
⑵ 怎樣使用javaweb實現上傳視頻和下載功能
文件上傳就是將客戶端資源,通過網路傳遞到伺服器端。
因為文件數據比較大,必須通過文件上傳才可以完成將數據保存到資料庫端的操作。
文件上傳的本質就是IO流操作。
演示:文件上傳應該如何操作?
瀏覽器端:
1.method=post 只有post才可以攜帶大數據
2.必須使用<input type='file' name='f'>要有name屬性
3.encType="multipart/form-data"
伺服器端:
request對象是用於獲取請求信息。
它有一個方法 getInputStream(); 可以獲取一個位元組輸入流,通過這個流,可以讀取到
所有的請求正文信息.
文件上傳原理:
瀏覽器端注意上述三件事,在伺服器端通過流將數據讀取到,在對數據進行解析.
將上傳文件內容得到,保存在伺服器端,就完成了文件上傳。
注意:在實際開發中,不需要我們進行數據解析,完成文件上傳。因為我們會使用文件上傳的工具,它們已經封裝好的,提供API,只要調用它們的API就可以完成文件上傳操作.我們使用的commons-fileupload,它是apache提供的一套開源免費的文件上傳工具。
代碼演示文件上傳的原理:
在WebRoot下新建upload1.jsp
[html]view plain
<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%>
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
<html>
<head>
<title>MyJSP'index.jsp'startingpage</title>
</head>
<body>
<!--encType默認是application/x-www-form-urlencoded-->
<formaction="${pageContext.request.contextPath}/upload1"
method="POST"enctype="multipart/form-data">
<inputtype="text"name="content"><br>
<inputtype="file"name="f"><br><inputtype="submit"
value="上傳">
</form>
</body>
</html>
packagecn.itcast.web.servlet;
importjava.io.IOException;
importjava.io.InputStream;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
{
publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
//System.out.println("upload1servlet......");
//通過request獲取一個位元組輸入流,將所有的請求正文信息讀取到,列印到控制台
InputStreamis=request.getInputStream();
byte[]b=newbyte[1024];
intlen=-1;
while((len=is.read(b))!=-1){
System.out.println(newString(b,0,len));
}
is.close();
}
publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
doGet(request,response);
}
}
在web頁面中添加上傳輸入項。
在Servlet中讀取上傳文件的數據,並保存在伺服器硬碟中。
1、必須設置input輸入項的name屬性,否則瀏覽器將不會發送上傳文件的數據。
2、必須把form的encType屬性設為multipart/form-data 設置該值後,瀏覽器在上傳文件時,並把文件數據附帶在http請求消息體內,並使用MIME協議對上傳的文件進行描述,以方便接收方對上傳數據進行解析和處理。
3、表單的提交方式要設置為post。
Request對象提供了一個getInputStream方法,通過這個方法可以讀取到客戶端提交過來的數據。但由於用戶可能會同時上傳多個文件,在servlet端編程直接讀取上傳數據,並分別解析出相應的文件數據是一項非常麻煩的工作,示例。
為方便用戶處理文件上傳數據,Apache 開源組織提供了一個用來處理表單文件上傳的一個開源組件( Commons-fileupload ),該組件性能優異,並且其API使用極其簡單,可以讓開發人員輕松實現web文件上傳功能,因此在web開發中實現文件上傳功能,通常使用Commons-fileupload組件實現。
使用Commons-fileupload組件實現文件上傳,需要導入該組件相應支撐jar包:Commons-fileupload和commons-io。commo-io不屬於文件上傳組件的開發jar文件,但Commons-fileupload組件從1.1版本開始,它工作時需要commons-io包的支持。
新建Upload1Servlet 路徑:/upload1
[java]view plain
在瀏覽器端訪問信息如下:
文件上傳概述
實現web開發中的文件上傳功能,需要完成如下二步操作:
如何在web頁面中添加上傳輸入項?
<input type="file">標簽用於在web頁面中添加文件上傳輸入項,設置文件上傳輸入項時注意:
如何在Servlet中讀取文件上傳數據,並保存到本地硬碟中?
⑶ javaWeb能和ftp實現大文件上傳嗎
java上傳可以使用common-fileupload上傳組件的。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 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);
}
}
}
⑷ java上傳文件到伺服器java實現文件上傳的三種方式
一、需求
在項目開發中,遇到需要將頁面上的文件上傳至本地保存,之後這個上傳的文件還能進行訪問,後台是Spring Boot框架搭建的,只需將文件上傳至Spring Boot項目編譯之後的classes\static\文件夾中即可。如下圖:
二、文件上傳
1、 定義文件上傳介面方法
// 在pom.xml引入spring-boot-starter-web依賴,即可導包import org.springframework.web.multipart.MultipartFile;// fileRoot:上傳文件保存的根路徑String upload(MultipartFile file, String fileRoot) throws IOException;2、文件上傳介面方法實現
@Overridepublic String upload(MultipartFile file, String fileRoot) throws IOException { prepareFilePath(fileRoot); // 獲取上傳文件的原文件名 String fileName = file.getOriginalFilename(); // 規則化之後的文件上傳根路徑 String normalizeFileRoot = getNormalizeFileRoot(fileRoot); // 根據路徑和文件名創建目標文件 File targetFile = new File(normalizeFileRoot, fileName); // 如果目標文件存在,刪除 if (targetFile.exists()) targetFile.delete(); // 將目標文件進行轉移 file.transferTo(targetFile); return String.format("%s\\%s", normalizeFileRoot, fileName);}/** fileRoot:上傳文件保存的根路徑 此方法是准備文件上傳的路徑,如果路徑不存在,即創建*/private void prepareFilePath(String fileRoot) { File file = new File(Helper.normalizePath(fileRoot)); if (!file.exists()) file.mkdirs();}/** 該方法主要對文件路徑進行規則化,如:D:\\\360Browser\///360Chrome\\//, 像這種路徑就不正確,此方法可以將路徑規則化為:D:\360Browser\360Chrome*/private String getNormalizeFileRoot(String fileRoot) { return Helper.normalizePath(fileRoot);}Helper工具類中的路徑規則化方法
public static String normalizePath(String path) { String result = path.replaceAll("/+", Matcher.quoteReplacement(File.separator)); return result.replaceAll("\\\\+", Matcher.quoteReplacement(File.separator));}3、Controller
@PostMapping("/upload")public RequestResult upload(@RequestParam("file") MultipartFile file) throws IOException { Config config = configService.get("Upload", "FileRoot"); String filePath = busService.upload(file, config.getValue()); return RequestResult.success(filePath);}三、測試
1、 使用Postman進行文件上傳測試
2、 在瀏覽器中輸入定位文件.doc,可以將文件下載到本地
⑸ java上傳文件後用戶是如何訪問的(java實現文件上傳的三種方式)
JAVA把文件傳到伺服器.......文件上傳到A以後放到伺服器上面然後他就有一個絕對的訪問路徑也就是對應一個絕對的url這樣就好辦了
Java提供了對URL訪問和大量的流操作的的API,可以很容易的完成對網路上資源的存取,下面的代碼段就完成了對一個網站的資源進行訪問:
......
destUrl="";
//假設你把文件放到webroot底下的java文件裡面
url=newURL(destUrl);
httpUrl=(HttpURLConnection)url.openConnection();
//連接指定的網路資源
httpUrl.connect();
//獲取網路輸入流
bis=newBufferedInputStream(httpUrl.getInputStream());
......
得到流後下面你自己想怎麼操作就怎麼操作了
對於怎麼得到資源的連接地址這個方法很多你可以專門提供一個Servlet獲取到輸出的流後Response.write轉門提供伺服器已上傳的文件文件名可以一天位單位返回
客戶端用與上面同樣的方法得到文件名後拆分然後再繼續循環調用上面的方法下載文件就ok了
呵呵希望可以幫助到你
如何通過Java客戶端程序通過rest介面訪問並上傳文件(文檔)到web伺服器?圖片目錄不在項目路徑下,直接通過HTTP訪問不到,如果你硬是要這么訪問,你可以自己寫一個Servlet,通過流的方式輸出,注意要吧Content-Type設置正確
java上傳成功後怎麼觸發其他操作javaget方式非同步上傳_簡述Java非同步上傳文件的三種方式原創
2021-02-1316:31:03
yibbbian
碼齡4年
關注
本文為大家分享了三種Java非同步上傳文件方式,供大家參考,具體內容如下
用第三方控制項,如Flash,ActiveX等瀏覽器插件上傳。
使用隱藏的iframe模擬非同步上傳。
使用XMLHttpRequest2來實現非同步上傳。
第一種使用瀏覽器插件上傳,需要一定的底層編碼功底,在這里我就不講了,以免誤人子弟,提出這點大家可以自行網路。
第二種使用隱藏的iframe模擬非同步上傳。為什麼在這里說的是模擬呢?因為我們其實是將返回結果放在了一個隱藏的iframe中,所以才沒有使當前頁面跳轉,感覺就像是非同步操作一樣。
隱藏的iframe上傳文件
附件:
正在上傳...
//上傳完成後的回調
functionuploadFinished(fileName){
addToFlist(fileName);
loading(false);
}
functionaddToFlist(fname){
vartemp=["
",
fname,
"刪除",
"
"
];
$("#flist").append(temp.join(""));
}
functionloading(showloading){
if(showloading){
$("#uptxt").show();
}else{
$("#uptxt").hide;
}
}
這種技術有兩個關鍵的地方:
1.form會指定target,提交的結果定向返回到隱藏的ifram中。(即form的target與iframe的name屬性一致)。
2.提交完成後,iframe中頁面與主頁面通信,通知上傳結果及服務端文件信息
如何與主頁面通信呢?
我們用nodejs在接收完了文件後返回了一個window.parent.主頁面定義的方法,執行後可以得知文件上傳完成。代碼很簡單:
router.post('/upload2',multipartMiddleware,function(req,res){
varfpath=req.files.myfile.path;
varfname=fpath.substr(fpath.lastIndexOf('\')+1);
setTimeout(function{
varret=["
"window.parent.uploadFinished('"+fname+"');",
""];
res.send(ret.join(""));
},3000);
});
執行後可以打開開發人員選項,你會發現隱藏iframe中返回了伺服器的一些數據。
第三種使用XMLHttpRequest2來進行真正的非同步上傳。
還是先貼出代碼:
執行後可以打開開發人員選項,你會發現隱藏iframe中返回了伺服器的一些數據。第三種使用XMLHttpRequest2來進行真正的非同步上傳。還是先貼出代碼:
xhrlevel2非同步上傳
附件:
正在上傳...
停止上傳
functionupload{
//1.准備FormData
varfd=newFormData;
fd.append("myfile",$("#myfile")[0].files[0]);
//創建xhr對象
varxhr=newXMLHttpRequest;
//監聽狀態,實時響應
//xhr和xhr.upload都有progress事件,xhr.progress是下載進度,xhr.upload.progress是上傳進度
xhr.upload.onprogress=function(event){
if(event.lengthComputable){
varpercent=Math.round(event.loaded*100/event.total);
console.log('%d%',percent);
$("#upprog").text(percent);
}
};
//傳輸開始事件
xhr.onloadstart=function(event){
console.log('loadstart');
$("#upprog").text('開始上傳');
$("#stopbtn").one('click',function{xhr.abort;$(this).hide();});
loading(true);
};
//ajax過程成功完成事件
xhr.onload=function(event){
console.log('loadsuccess');
$("#upprog").text('上傳成功');
console.log(xhr.responseText);
varret=JSON.parse(xhr.responseText);
addToFlist(ret.fname);
};
//ajax過程發生錯誤事件
xhr.onerror=function(event){
console.log('error');
$("#upprog").text('發生錯誤');
};
//ajax被取消
xhr.onabort=function(event){
console.log('abort');
$("#upprog").text('操作被取消');
};
//loadend傳輸結束,不管成功失敗都會被觸發
xhr.onloadend=function(event){
console.log('loadend');
loading(false);
};
//發起ajax請求傳送數據
xhr.open('POST','/upload3',true);
xhr.send(fd);
}
functionaddToFlist(fname){
vartemp=["
",
fname,
"刪除",
"
"
];
$("#flist").append(temp.join(""));
}
functiondelFile(fname){
console.log('todeletefile:'+fname);
//TODO:請實現
}
functionloading(showloading){
if(showloading){
$("#uptxt").show();
$("#stopbtn").show();
}else{
$("#uptxt").hide();
$("#stopbtn").hide();
}
}
代碼有點多,但是通俗易懂。使用過AJAX的人都知道,XHR對象提供了一個onreadystatechange的回調方法來監聽整個請求/響應過程。在XMLHttpRequest2級規范中又多了幾個進度事件。有以下6個事件:
1.loadstart:在接收到響應數據的第一個位元組時觸發。
2.progress:在接收響應期間持續不斷地觸發。
3.error:在請求發生錯誤時觸發。
4.abort:在因為調用abort方法而終止連接時觸發。
5.load:在接收到完整的響應數據時觸發。
6.loadend:在通信完成或者觸發error,abort,load事件後觸發。
這次我們可以解讀代碼:當傳輸事件開始後,我們便在停止傳送按鈕上添加點擊事件,內置了abort方法可以停止傳送。若不點則會正常上傳直到傳送完畢為止。其後台代碼類似第二種方法。
三種方法各有優劣,做個簡單的小結吧。
第三方控制項交互性和可控性好,因為接近底層,其性能也是很優秀的。但是由於編寫難度大通常需要自己安裝插件,有時可能需要自己進行編寫。
隱藏的iframe方法我個人覺得是非常有思想的一個方法,iframe可以幫我們做很多事。這種方式具有廣泛的瀏覽器兼容性而且不需要安裝插件。但是它交互性差,上傳過程不可控,而且性能也是很一般的。
XHR2級的純ajax上傳,它必須要版本比較高一點的瀏覽器(ie9+)。但是它交互性特別好,可以看到上傳進度並且是可控的。
java如何訪問區域網共享文件?
java訪問共享文件夾,讀取區域網中一台機器的共享目錄中的文件,需要jcifs-1.1.11.jar的支持,使用SMB協議,以下是實現了遠程讀取文件的功能代碼:
package?junit;
import?jcifs.smb.SmbFile;
/**???
?*?java訪問區域網共享目錄
?*
?*?@author?administrator
?*?@version?1.0?2015-7-6?
?*/
public?class?SmbTest?{
????public?static?void?main(String[]?args)?throws?Exception?{
????????//smb://xxx:[email protected]/testIndex/??
????????//xxx:xxx是共享機器的用戶名密碼
????????String?url="smb://192.168.2.188/testIndex/";
????????SmbFile?file?=?new?SmbFile(url);
????????if(file.exists()){
????????????SmbFile[]?files?=?file.listFiles();
????????????for(SmbFile?f?:?files){
????????????????System.out.println(f.getName());
????????????}
????????}
????}
}
java文件上傳後,一般怎麼和用戶掛鉤呢?第一個問題,如果有單獨的文件伺服器,上傳的每一個文件有一個唯一的id,{id,filePath},id與用戶關聯即可.
第二個問題,可以一組文件分配一個id,表示這些文件是一個組的,id與用戶關聯.