這個事多線程下載一個文件

讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業的熱愛。我們立志把好的技術通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:國際域名空間、網頁空間、營銷軟件、網站建設、冀州網站維護、網站推廣。
這個是同時下載多個文件得
希望對你有用,多線程下載這玩意沒寫過,不過,可以給你個思路,不知正確與否,希望與你有用:
對同一個文件或http建立connection,然后獲取整個文件得大小,(只有知道文件大小才能同時使用多線程建立多個連接來分段下載,如果不知道文件大小,想用多線程下載一定要做好線程同步工作,且速度提高不快,而且只能用線程輪流讀取同一個輸入流,而不能用不同得線程做不同得連接來下載),然后執行數據分段計算,算出每個線程建立連接后需要從哪個偏移量進行下載(需要使用文件得大小除以給定的線程數來算出),之后進行連接,每個線程建立連接后根據算出得下載偏移量將數據指針移到需要下載得位置開始下載,當所有線程下載完畢后再將每個線程下載得文件按下載得前后順序(這里得順序意思用一個例子來說明:比如a線程負責下載0到99字節,b線程負責下載100到199字節,c線程下載200到299字節,那么當所有線程下載完畢后需要將先將b線程下載好得文件增加到a線程下載得文件中,再將c線程下載得文件增加到a線程下載得文件中,然后刪除b,c線程下載得文件.)合成一個文件.
上面只是我個人意見,不知道是否正確,呵呵.
愿上帝保佑吧.呵呵.
應該是用struts作的吧,a.java是一個action類,在action類中將獲得值保存到request或session中,也就是request.setAttribute("xxx",xxxx);在c.jsp中獲得request或session中的值,%=request.getAttribute(xxx);% 這樣就把后面的xxxx的值獲得了。
目測暫時沒發現什么問題。首先你確認一下你是否是ajax異步提交的請求,如果是ajax提交的,是不會彈出下載框的,其次看是不是瀏覽器的問題,多試幾個瀏覽器看
您好,看到您圖片的目錄結構,項目應該是基于 MVC 的分層結構進行開發代碼的。一般程序的請求入口是您的 controller 包下面。
如果目前還不確定是哪個請求,先在瀏覽器打開開發者控制臺,找到具體的請求地址。這里以京東為例。域名后面的一般就是請求的路徑,比如下圖這個 /getinfo。
確認具體的請求路徑后,在 idea 左側選中項目根目錄右鍵 Find in the path,輸入請求路徑 getinfo,應該能定位到具體的 controller 接口。
如果還是搜索不到,可以在 idea 下載一個 Restful Tool kit 插件,下載好后重啟 idea,使用快捷鍵 cmd + / 進行快捷搜索 RESTful 接口。
希望我的回答可以幫助到你。
struts 有提供的。
文件上傳
1.jsp頁面
s:form action="fileAction" namespace="/file" method="POST" enctype="multipart/form-data"
!-- name為后臺對應的參數名稱 --
s:file name="files" label="file1"/s:file
s:file name="files" label="file2"/s:file
s:file name="files" label="file3"/s:file
s:submit value="提交" id="submitBut"/s:submit
/s:form
2.Action
//單個文件上傳可以用 File files,String filesFileName,String filesContentType
//名稱要與jsp中的name相同(三個變量都要生成get,set)
private File[] files;
// 要以File[]變量名開頭
private String[] filesFileName;
// 要以File[]變量名開頭
private String[] filesContentType;
private ServletContext servletContext;
//Action調用的上傳文件方法
public String execute() {
ServletContext servletContext = ServletActionContext.getServletContext();
String dataDir = servletContext.getRealPath("/file/upload");
System.out.println(dataDir);
for (int i = 0; i files.length; i++) {
File saveFile = new File(dataDir, filesFileName[i]);
files[i].renameTo(saveFile);
}
return "success";
}
3.配置上傳文件臨時文件夾(在struts.xml中配置)
constant name="struts.multipart.saveDir" value="c:/temp"/
文件下載
1.下載的url(到Action)
a href="${pageContext.request.contextPath}/file/fileAction!down.action"下載/a
2.struts.xml配置
package name="file" namespace="/file" extends="struts-default"
action name="fileAction" class="com.struts2.file.FileAction"
!-- 下載文件配置 --
!--type 為 stream 應用 StreamResult 處理--
result name="down" type="stream"
!--
不管實際類型,待下載文件 ContentType 統一指定為 application/octet-stream
默認為 text/plain
--
param name="contentType"application/octet-stream/param
!--
默認就是 inputStream,它將會指示 StreamResult 通過 inputName 屬性值的 getter 方法,
比如這里就是 getInputStream() 來獲取下載文件的內容,意味著你的 Action 要有這個方法
--
param name="inputName"inputStream/param
!--
默認為 inline(在線打開),設置為 attachment 將會告訴瀏覽器下載該文件,filename 指定下載文
件保有存時的文件名,若未指定將會是以瀏覽的頁面名作為文件名,如以 download.action 作為文件名,
這里使用的是動態文件名,${fileName}, 它將通過 Action 的 getFileName() 獲得文件名
--
param name="contentDisposition"attachment;filename="${fileName}"/param
!-- 輸出時緩沖區的大小 --
param name="bufferSize"4096/param
/result
/action
/package
3.Action
//Action調用的下載文件方法
public String down() {
return "down";
}
//獲得下載文件的內容,可以直接讀入一個物理文件或從數據庫中獲取內容
public InputStream getInputStream() throws Exception {
String dir = servletContext.getRealPath("/file/upload");
File file = new File(dir, "icon.png");
if (file.exists()) {
//下載文件
return new FileInputStream(file);
//和 Servlet 中不一樣,這里我們不需對輸出的中文轉碼為 ISO8859-1
//將內容(Struts2 文件下載測試)直接寫入文件,下載的文件名必須是文本(txt)類型
//return new ByteArrayInputStream("Struts2 文件下載測試".getBytes());
}
return null;
}
// 對于配置中的 ${fileName}, 獲得下載保存時的文件名
public String getFileName() {
String fileName ="圖標.png";
try {
// 中文文件名也是需要轉碼為 ISO8859-1,否則亂碼
return new String(fileName.getBytes(), "ISO8859-1");
} catch (UnsupportedEncodingException e) {
return "icon.png";
}
}
你好,你想復雜了,上傳和下載文件于普通的做法差不多,區別在于rest風格上傳文件要用post方法,下載用get方法,而且URL符合rest風格的要求即可
                文章標題:java下載后臺代碼 java后端項目代碼
                
                分享網址:http://www.yijiale78.com/article22/doddjjc.html
            
成都網站建設公司_創新互聯,為您提供建站公司、服務器托管、ChatGPT、全網營銷推廣、App開發、響應式網站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯
