1. java 实现文件批量上传下载实现方法 以及优势缺点
给你个不乱的。这个写的很清楚,基本上你复制源码就可以。http://blog.csdn.net/hzc543806053/article/details/7524491
2. 求JAVA WEB项目大文件上传下载方法
不知道您所说的大文件上传下载方法是指的哪些方面的?是具体的业务逻辑代码?还是需要整个的设计方案或者架构设计?又或者是其他?
3. Java 批量大文件上传下载如何实现
解决这种大文件上传不太可能用web上传的方式,只有自己开发插件或是当门客户端上传,或者用现有的ftp等。1)开发一个web插件。用于上传文件。2)开发一个FTP工具,不用web上传。3)用现有的FTP工具。下面是几款不错的插件,你可以试试:1)Jquery的uploadify插件。具体使用。你可以看帮助文档。
4. java 如何下载文件
httpURLConnection conn;conn.getInputStream;再将这个stream 写到文件就可以了
5. java web 大文件上传下载
直接把大文件读取为IO流,之后进行上传下载即可,不用担心文件大,是可以分流下载上传的(setBufferSize(1024))。举例: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服务用户名和密码即可。
6. 我写了个下载程序,用Java写的,但是写完以后发现下载大文件的时候报错,内存溢出,能看看是哪的问题么
不能一次读取完,大文件很容易内存溢出。参考下:
publicstaticvoiddownload(Stringpath,HttpServletResponseresponse)throwsException{try{Filefile=newFile(path);if(file.exists()){Stringfilename=file.getName();InputStreamfis=newBufferedInputStream(newFileInputStream(file));response.reset();response.setContentType("application/x-download");response.addHeader("Content-Disposition","attachment;filename="+newString(filename.getBytes(),"iso-8859-1"));response.addHeader("Content-Length",""+file.length());OutputStreamtoClient=newBufferedOutputStream(response.getOutputStream());response.setContentType("application/octet-stream");byte[]buffer=newbyte[1024*1024*4];inti=-1;while((i=fis.read(buffer))!=-1){toClient.write(buffer,0,i);}fis.close();toClient.flush();toClient.close();try{response.wait();}catch(InterruptedExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}else{PrintWriterout=response.getWriter();out.print("<script>");out.print("alert("notfindthefile")");out.print("</script>");}}catch(IOExceptionex){PrintWriterout=response.getWriter();out.print("<script>");out.print("alert("notfindthefile")");out.print("</script>");}}
7. JAVA WEB项目大文件上传下载求思路
现在大多提供填报功能的报表工具都会提供上传下载组件,可以直接使用报表工具做张填报表添加这样的控件就可以实现这样的功能。
具体实现可以参考下:如何实现文件(附件)的上下载
8. 我的手机是山寨版的,在下载java时却出现“文件太大,无法下载”,应该怎么解决这个问题
如果想要下载大于300kb的文件时需要进行如下设置:首先按WAP——设置——编辑设置档——中国移动GPRS——编辑设置档联机形态——HTTP——代理服务器网址010.000.000.172代理服务器端口号80 设置后保存后激活就可以了….
9. 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组件,去网上下个就行了,也有介绍的
10. 请问一个java的文件下载的问题,为什么我的下载每次都看不到进度条,而是一下子就下好了呢
建立新的线程来处理下载。去看Thread的API有详细说明。例如本来是:downloading();System.out.println("下载完成");就改成:class DownloadListener {//这个class自己找个地方放。 public void downloadInProgress(double percent) { System.out.println("已下载" + percent); } public void downloadCompleted() { System.out.println("已下载完成"); }}//从这里开始应该被改成的内容DownloadListener downloadListener = new DownloadListener();new Thread() { public void run() { //这里写第二线程的内容 downloading(downloadListener);//于是downloadListener被传入了downloading函数,就可以在downloading函数内部通过呼叫downloadListener的downloadInProgress和downloadCompleted来通知第一线程下载情况。 }}.start(); //第一线程会在这里启动第二线程,然后不管第二线程执行了什么是否完成,直接执行下一句。System.out.println("第二线程已经启动");//例子里很多System.out.println是为了简明。实际情况一般是修改一个给用户看的状态栏JLabel,这里下载进行中时,应该是更新一个JProgressBar。
未经允许不得转载:山九号 » java大文件下载|java web 大文件上传下载