文件上传java|JAVA WEB文件上传步骤

㈠ java中怎么把文件上传到服务器的指定路径

stringrealpath=servletactioncontext.getservletcontext().getrealpath("/upload");//获取服务器路径string[]targetfilename=uploadfilename;for(inti=0;i<upload.length;i++){filetarget=newfile(realpath,targetfilename[i]);fileutils.file(upload[i],target);//这是一个文件复制类file()里面就是io操作,如果你不用这个类也可以自己写一个io复制文件的类}其中privatefile[]upload;//实际上传文件privatestring[]uploadcontenttype;//文件的内容类型privatestring[]uploadfilename;//上传文件名这三个参数必须这样命名,因为文件上传控件默认是封装了这3个参数的,且在action里面他们应有get,set方法

㈡ java 文件上传的代码,尽量详细一点。。。

// 这是我写的一个方法,里面只需要传两个参数就OK了,在任何地方调用此方法都可以文件上传 /** * 上传文件 * @param file待上传的文件 * @param storePath待存储的路径(该路径还包括文件名) */ public void uploadFormFile(FormFile file,String storePath)throws Exception{ // 开始上传 InputStream is =null; OutputStream os =null; try { is = file.getInputStream(); os = new FileOutputStream(storePath); int bytes = 0; byte[] buffer = new byte[8192]; while ((bytes = is.read(buffer, 0, 8192)) != -1) { os.write(buffer, 0, bytes); } os.close(); is.close(); } catch (Exception e) { throw e; } finally{ if(os!=null){ try{ os.close(); os=null; }catch(Exception e1){ ; } } if(is!=null){ try{ is.close(); is=null; }catch(Exception e1){ ; } } } }

㈢ java如何实现文件上传

public static int transFile(InputStream in, OutputStream out, int fileSize) {int receiveLen = 0;final int bufSize = 1000;try {byte[] buf = new byte[bufSize];int len = 0;while(fileSize – receiveLen > bufSize){len = in.read(buf);out.write(buf, 0, len);out.flush();receiveLen += len;System.out.println(len);}while(receiveLen < fileSize){len = in.read(buf, 0, fileSize – receiveLen);System.out.println(len);out.write(buf, 0, len);receiveLen += len;out.flush();}} catch (IOException e) {// TODO 自动生成 catch 块e.printStackTrace();}return receiveLen;}这个方法从InputStream中读取内容,写到OutputStream中。那么发送文件方,InputStream就是,OutputStream就是Socket.getOutputStream.接受文件方,InputStream就是Socket.getInputStream,OutputStream就是FileOutputStream。就OK了。 至于存到数据库里嘛,Oracle里用Blob。搜索一下,也是一样的。从Blob能获取一个输出流。

㈣ Java 批量大文件上传下载如何实现

解决这种大文件上传不太可能用web上传的方式,只有自己开发插件或是当门客户端上传,或者用现有的ftp等。1)开发一个web插件。用于上传文件。2)开发一个FTP工具,不用web上传。3)用现有的FTP工具。下面是几款不错的插件,你可以试试:1)Jquery的uploadify插件。具体使用。你可以看帮助文档。

㈤ java中怎么把文件上传到服务器的指定路径

文件从本地到服务器的功能,其实是为了解决目前浏览器不支持获取本地文件全路径。不得已而想到上传到服务器的固定目录,从而方便项目获取文件,进而使程序支持EXCEL批量导入数据。

java中文件上传到服务器的指定路径的代码:

在前台界面中输入:

<form method="post" enctype="multipart/form-data" action="../manage/excelImport.do">

请选文件:<input type="file" name="excelFile">

<input type="submit" value="导入" onclick="return impExcel();"/>

</form>

action中获取前台传来数据并保存

/**

* excel 导入文件

* @return

* @throws IOException

*/

@RequestMapping("/usermanager/excelImport.do")

public String excelImport(

String filePath,

MultipartFile excelFile,HttpServletRequest request) throws IOException{

log.info("<<<<<<action:{} Method:{} start>>>>>>","usermanager","excelImport" );

if (excelFile != null){

String filename=excelFile.getOriginalFilename();

String a=request.getRealPath("u/cms/www/201509");

SaveFileFromInputStream(excelFile.getInputStream(),request.getRealPath("u/cms/www/201509"),filename);//保存到服务器的路径

}

log.info("<<<<<<action:{} Method:{} end>>>>>>","usermanager","excelImport" );

return "";

}

/**

* 将MultipartFile转化为file并保存到服务器上的某地

*/

public void SaveFileFromInputStream(InputStream stream,String path,String savefile) throws IOException

{

FileOutputStream fs=new FileOutputStream( path + "/"+ savefile);

System.out.println("————"+path + "/"+ savefile);

byte[] buffer =new byte[1024*1024];

int bytesum = 0;

int byteread = 0;

while ((byteread=stream.read(buffer))!=-1)

{

bytesum+=byteread;

fs.write(buffer,0,byteread);

fs.flush();

}

fs.close();

stream.close();

}

㈥ java中怎样上传文件

分真少。。。public static int transFile(InputStream in, OutputStream out, int fileSize) { int receiveLen = 0; final int bufSize = 1000; try { byte[] buf = new byte[bufSize]; int len = 0; while(fileSize – receiveLen > bufSize) { len = in.read(buf); out.write(buf, 0, len); out.flush(); receiveLen += len; System.out.println(len); } while(receiveLen < fileSize) { len = in.read(buf, 0, fileSize – receiveLen); System.out.println(len); out.write(buf, 0, len); receiveLen += len; out.flush(); } } catch (IOException e) { // TODO 自动生成 catch 块 e.printStackTrace(); } return receiveLen; }这个方法从InputStream中读取内容,写到OutputStream中。那么发送文件方,InputStream就是FileInputStream,OutputStream就是Socket.getOutputStream.接受文件方,InputStream就是Socket.getInputStream,OutputStream就是FileOutputStream。就OK了。 至于存到数据库里嘛,Oracle里用Blob。搜索一下,也是一样的。从Blob能获取一个输出流。

㈦ java怎么用commons-fileupload实现上传文件

文件上传步骤:1.导入jar包common-fileupload.jarcommon-io.jar2.上传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字节,也就是1MBupload.setFileSizeMax(1024*1024);//设置上传文件总量的最大值,最大值=同时上传的多个文件的大小的最大值的和,目前设置为10MBupload.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–15intdir2=(hashcode&0xf0)>>4;//0-15//构造新的保存目录Stringdir=savePath+"\"+dir1+"\"+dir2;//upload23upload35if(!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实现多文件上传

即使再多文件也是通过的单个文件逐次上传的(zip等压缩包实际上是一个文件)。实现思路就是将多个文件循环进行上传,上传方法举例:/*** 上传文件** @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);}}}}备注:只需要修改上传的服务器地址、用户名、密码即可进行服务器访问上传。根据实际需要修改即可。

㈨ JAVA WEB文件上传步骤

JAVA WEB文件上传步骤如下: 实现 Web 开发中的文件上传功能,两个操作:在 Web 页面添加上传输入项,在 Servlet 中读取上传文件的数据并保存在本地硬盘中。 1、Web 端上传文件。在 Web 页面中添加上传输入项:<input type="file"> 设置文件上传输入项时应注意:(1) 必须设置 input 输入项的 name 属性,否则浏览器将不会发送上传文件的数据。(2) 必须把 form 的 enctype 属性设为 multipart/form-data,设置该值后,浏览器在上传文件时,将把文件数据附带在 http 请求消息体中,并使用 MIME 协议对上传文件进行描述,以方便接收方对上传数据进行解析和处理。(3) 表单提交的方式要是 post 2、服务器端获取文件。如果提交表单的类型为 multipart/form-data 时,就不能采用传统方式获取数据。因为当表单类型为 multipart/form-data 时,浏览器会将数据以 MIME 协议的形式进行描述。如果想在服务器端获取数据,那么我们必须采用获取请求消息输入流的方式来获取数据。 3、Apache-Commons-fileupload。为了方便用户处理上传数据,Apache 提供了一个用来处理表单文件上传的开源组建。使用 Commons-fileupload 需要 Commons-io 包的支持。 4、fileuplpad 组建工作流程 (1)客户端将数据封装在 request 对象中。 (2)服务器端获取到 request 对象。 (3)创建解析器工厂 DiskFileItemFactory 。 (4)创建解析器,将解析器工厂放入解析器构造函数中。之后解析器会对 request 进行解析。 (5)解析器会将每个表单项封装为各自对应的 FileItem。 (6)判断代表每个表单项的 FileItem 是否为普通表单项 isFormField,返回 true 为普通表单项。 (7)如果是普通表单项,通过 getFieldName 获取表单项名,getString 获得表单项值。 (8)如果 isFormField 返回 false 那么是用户要上传的数据,可以通过 getInputStream 获取上传文件的数据。通过getName 可以获取上传的文件名。


赞 (0)