java实现图片或文件的上传功能实现代码

合集下载

Java多方式实现文件上传

Java多方式实现文件上传

在Struts 2中实现文件上传前一阵子有些朋友在电子邮件中问关于Struts 2实现文件上传的问题,所以今天我们就来讨论一下这个问题。

实现原理Struts 2是通过Commons FileUpload文件上传。

Commons FileUpload通过将HTTP的数据保存到临时文件夹,然后Struts使用fileUpload拦截器将文件绑定到Action的实例中。

从而我们就能够以本地文件方式的操作浏览器上传的文件。

具体实现前段时间Apache发布了Struts 2.0.6 GA,所以本文的实现是以该版本的Struts 作为框架的。

以下是例子所依赖类包的列表:清单1 依赖类包的列表首先,创建文件上传页面FileUpload.jsp,内容如下:<% @ page language = " java " contentType = " text/html; charset=utf-8 " pageEncodi ng = " utf-8 " %><% @ taglib prefix = " s " uri = " /struts-tags " %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "/ TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="/1999/xhtml"><head><title> Struts 2 File Upload </title></head><body><s:form action="fileUpload"method="POST"enctype="multipart/form-data"> <s:file name="myFile"label="Image File"/><s:textfield name="caption"label="Caption"/><s:submit /></s:form></body></html>清单2 FileUpload.jsp在FileUpload.jsp中,先将表单的提交方式设为POST,然后将enctype设为multipart/form-data,这并没有什么特别之处。

Java实现多文件上传功能

Java实现多文件上传功能

Java实现多⽂件上传功能⽂件上传是开发中⼗分常见的功能,在servlet3.0之前,实现⽂件上传需要使⽤⼀些插件技术,⽐如: commons-fileuploadsmartupload但是在3.0之后servlet内部集成⽂件上传的技术(multipart),有关servlet3.0⽂件上传的实现过程如下:1、表单的提交⽅式必须设置为post2、表单的enctype必须设置为multipart/form-data(使⽤⼆进制流的⽅式提交数据)3、在servlet类中加上@MultipartConfig注解包含四个可设置的参数分别为:fileSizeThreshold 内存缓存的最⼤空间(当上传⽂件的字节数达到该值后使⽤临时⽂件缓存)location 临时⽂件的存储⽬录maxFileSize 允许上传的单个⽂件的最⼤限制maxRequestSize 表单允许提交的总字节数页⾯端<!DOCTYPE html><html><head><meta charset="UTF-8"><title>Insert title here</title></head><body><form action="upload3" method="post" enctype="multipart/form-data"><input type="text" name="fname" placeholder="请输⼊⽂件名" /> <br /><input type="file" name="myfile" multiple/><button>上传</button></form></body></html>服务端package com.softeem.servlet;import java.io.File;import java.io.IOException;import java.util.Collection;import java.util.UUID;import javax.servlet.ServletException;import javax.servlet.annotation.MultipartConfig;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.Part;@WebServlet({ "/UploadServlet", "/upload" })@MultipartConfig(//设置内存缓存的最⼤空间(当上传⽂件的字节数达到该值后使⽤临时⽂件缓存)fileSizeThreshold=1024*1024,//设置临时⽂件的存储⽬录location="d:/temp",//设置允许上传的单个⽂件的最⼤限制maxFileSize=1024*1024*200,//设置表单的最⼤允许提交的字节数maxRequestSize=1024*1024*500)public class UploadServlet extends HttpServlet {private static final long serialVersionUID = 1L;protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String basePath = "d:/myfileserver";Collection<Part> parts = request.getParts();for(Part part:parts){if(part.getSize() > 0){String fname = part.getSubmittedFileName();//随机产⽣⼀个uuid作为⽂件名称String uuid = UUID.randomUUID().toString();//获取⽂件后缀String suffix = fname.substring(stIndexOf("."));//组合uuid和⽂件后缀成为新的⽂件名称fname = uuid+suffix;part.write(basePath+File.separator+fname);}}}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stubdoGet(request, response);}}以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。

java使用CKEditor实现图片上传功能

java使用CKEditor实现图片上传功能

java使⽤CKEditor实现图⽚上传功能java如何使⽤CKEditor实现图⽚上传功能,具体内容如下1.根据实际需要下载指定的CKEditor2.删除⽂件ckeditor/plugins/image/dialogs/image.js预览框中⽂本内容,并修改hidden属性值为显⽰上传选项卡删除image.js中包含在双引号中的上述⽂本将image.js中的hidden属性值改为03.修改ckeditor/config.js⽂件,配置“上传到服务器”按钮调⽤的controller接⼝4.“上传到服务器”按钮调⽤的controller级别的接⼝@Controller@RequestMapping("publicutil")public class PublicUtilController {@RequestMapping(value = "uploadImage")private void uploadImage(HttpServletRequest request, HttpServletResponse response, HttpSession session,@RequestParam MultipartFile[] upload) { response.setCharacterEncoding("UTF-8");PrintWriter out=null;try {out = response.getWriter();} catch (IOException e1) {logger.error("response.getWriter()异常="+e1);e1.printStackTrace();}String callback = request.getParameter("CKEditorFuncNum");// 获得response,requestMap<String, Object> m = new HashMap<String, Object>();if (!ServletFileUpload.isMultipartContent(request)) {m.put("error", 1);m.put("message", "请选择⽂件!");//return m;("请选择⽂件!");}String originalFileName=null;//上传的图⽚⽂件名String fileExtensionName=null;//上传图⽚的⽂件扩展名for (MultipartFile file : upload) {if (file.getSize()> 10*1024* 1024) {out.println("<script type=\"text/javascript\">");out.println("window.parent.CKEDITOR.tools.callFunction(" + callback+ ",''," + "'⽂件⼤⼩不得⼤于10M');");out.println("</script>");}originalFileName=file.getOriginalFilename();("上传的图⽚⽂件名="+originalFileName);fileExtensionName= originalFileName.substring(stIndexOf(".") ,originalFileName.length()).toLowerCase();("图⽚⽂件扩展名="+fileExtensionName);String[] imageExtensionNameArray= WebsiteConstant.IMAGE_EXTENSION_NAME_ARRAY;String allImageExtensionName="";boolean isContain=false;//默认不包含上传图⽚⽂件扩展名for(int i=0;i<imageExtensionNameArray.length;i++){if(fileExtensionName.equals(imageExtensionNameArray[i])){isContain=true;}if(i==0){allImageExtensionName+=imageExtensionNameArray[i];}else{allImageExtensionName+=" , "+imageExtensionNameArray[i];}}String newFileName=java.util.UUID.randomUUID().toString()+fileExtensionName;String uploadPath =WebsiteConstant.PIC_APP_FILE_SYSTEM_CKEDITOR_LOCATION;if(isContain){//包含File pathFile = new File(uploadPath);if (!pathFile.exists()) { // 如果路径不存在,创建pathFile.mkdirs();}try {FileUtils.copyInputStreamToFile(file.getInputStream(), new File(uploadPath ,newFileName));// InputStream is=file.getInputStream();// File toFile = new File(uploadPath, newFileName);// OutputStream os = new FileOutputStream(toFile);// byte[] buffer = new byte[1024];// int length = 0;// while ((length = is.read(buffer)) > 0) {// os.write(buffer, 0, length);// }// is.close();// os.close();} catch (IOException e) {logger.error("FileUtils.copyInputStreamToFile uploadPath="+uploadPath+" newFileName ="+newFileName+" exception="+e);}String imageUrl=WebsiteConstant.PIC_APP_SERVER_URL+"images/ckeditor/"+newFileName;// 返回"图像信息"选项卡并显⽰图⽚ ,在对应的⽂本框中显⽰图⽚资源urlout.println("<script type=\"text/javascript\">");out.println("window.parent.CKEDITOR.tools.callFunction(" + callback+ ",'" +imageUrl + "','')");out.println("</script>");}else{out.println("<script type=\"text/javascript\">");out.println("window.parent.CKEDITOR.tools.callFunction(" + callback+ ",''," + "'⽂件格式不正确(必须为"+allImageExtensionName+"⽂件)');");out.println("</script>");}}}}<span style="font-size:14px;">public class WebsiteConstant {public static String[] IMAGE_EXTENSION_NAME_ARRAY={".jpg",".jpeg",".png",".gif",".bmp"};public static String PIC_APP_SERVER_URL="http://localhost:8090/Picture/";public static String PIC_APP_FILE_SYSTEM_CKEDITOR_LOCATION="/Users/abc/Documents/tomcat/webapps/Picture/images/ckeditor/"; public static final int SUCCESS = 1; // 操作成功</span>5.若是在Maven项⽬中使⽤的CKEditor,需要在pom.xml中添加如下代码:<dependency><groupId>com.ckeditor</groupId><artifactId>ckeditor-java-core</artifactId><version>3.5.3</version></dependency>6.最终效果图以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。

基于Java文件输入输出流实现文件上传下载功能

基于Java文件输入输出流实现文件上传下载功能

基于Java⽂件输⼊输出流实现⽂件上传下载功能本⽂为⼤家分享了Java实现⽂件上传下载功能的具体代码,供⼤家参考,具体内容如下前端通过form表单的enctype属性,将数据传递⽅式修改为⼆进制”流“的形式,服务端(servlet)通过 getInputStream() 获取流信息,运⽤java I/O 流的基础操作将流写⼊到⼀个服务端临时创建的⽂件temp中,然后再次利⽤⽂件基本操作,读取并截取临时⽂件内容,根据其中信息创建相应的⽂件,将读取出来的具体信息写⼊,下载时,根据提交的⽂件名称,找到服务器端相应的⽂件,然后根据输出流outStream输出到页⾯,同时将servlet的响应类型和响应头进⾏设置。

具体传输流程如下图:流信息的部分为:具体代码如下:前端代码:<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>Insert title here</title><script src="Js/jquery.js"></script></head><body><form action="FileUpServlet" method="post" enctype="multipart/form-data"><table><tr><td>请选择上传⽂件:</td><td><input id="myfile" name="myfile" type="file" value="" /></td><td><input type="submit" value="上传"></td></tr><tr><td>${info}</td></tr></table></form>⽂件下载:<a href="FileLoadownServlet?filename=${filename}">${filename}</a></body></html>上传servlet部分(核⼼)@WebServlet("/FileUpServlet")public class FileUpServlet extends HttpServlet {private static final long serialVersionUID = 1L;/*** @see HttpServlet#HttpServlet()*/public FileUpServlet() {super();// TODO Auto-generated constructor stub}/*** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)*/protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stubdoPost(request, response);}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stubrequest.setCharacterEncoding("utf-8");InputStream filesource = request.getInputStream();//request获取流信息String tempname = "D:/temp";//tempfile代表临时存放⽂件File tempfile = new File(tempname);//创建临时⽂件FileOutputStream outputStream = new FileOutputStream(tempfile);//输出流对象,指定输出指tempfile⽬录下byte b[] = new byte[1024];int n;while((n = filesource.read(b))!= -1)//从输出流中每次读取1024字节,直⾄读完{outputStream.write(b,0,n);}outputStream.close();filesource.close();//关闭输⼊输出流/*以下为具体的⽂件操作,主要为解析临时产⽣的 temp⽂件,知识多为java输⼊输出流的内容!*/RandomAccessFile randomfile = new RandomAccessFile(tempfile, "r");//随机流,指定要读临时⽂件,只读randomfile.readLine();//读取第⼀⾏,⽆效数据,不需要String str = randomfile.readLine();//读取第⼆⾏int beginIndex = stIndexOf("=")+2;//指定所需数据的开始位置int endIndex = stIndexOf("\"");//指定所需数据截⾄位置String filename = str.substring(beginIndex,endIndex);//截取⽂件名//重新定位⽂件指针,获取⽂件内容randomfile.seek(0);//⽂件指针从头开始long startext = 0;int i = 1;//⽂件内容开始位置while((n=randomfile.readByte()) != -1&&i <= 4){if(n=='\n'){startext = randomfile.getFilePointer();i++;}}startext = randomfile.getFilePointer() - 1;//获取⽂件内容结束位置randomfile.seek(randomfile.length());long endtext = randomfile.getFilePointer();int j = 1;while(endtext >= 0 && j <= 2){endtext--;randomfile.seek(endtext);if(randomfile.readByte()=='\n'){j++;}}endtext = endtext-1;//将临时⽂件保存⾄指定⽬录中String realpath = getServletContext().getRealPath("/")+"images";//设置⽂件保存⽬录System.out.println(realpath);File fileupload = new File(realpath);if(!fileupload.exists()){fileupload.mkdir();//⽬录不存在则创建}File savefile = new File(realpath,filename);RandomAccessFile randomAccessFile = new RandomAccessFile(savefile, "rw");randomfile.seek(startext);while(startext<endtext){randomAccessFile.write(randomfile.readByte());//⽂件写⼊startext = randomfile.getFilePointer();}//关闭各种输⼊输出流randomAccessFile.close();randomfile.close();tempfile.delete();//删除临时⽂件SimpleDateFormat timed = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");Date nowdate = new Date();String time = timed.format(nowdate.getTime());request.setAttribute("info", time+" "+filename+"上传成功!");request.setAttribute("filename", filename);request.getRequestDispatcher("/fildeOp.jsp").forward(request, response);}}下载部分protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stubString filename = request.getParameter("filename");String path = getServletContext().getRealPath("/")+"images/";File file = new File(path+filename);//找到⽂件if(file.exists())response.setContentType("application/x-msdownload"); //设置响应类型,此处为下载类型response.setHeader("Content-Disposition", "attachment;filename=\""+filename+"\"");//以附件的形式打开 InputStream inputStream = new FileInputStream(file);ServletOutputStream outputStream = response.getOutputStream();byte b[] = new byte[1024];int n;while((n = inputStream.read(b)) != -1){outputStream.write(b,0,n);}outputStream.close();inputStream.close();}else{request.setAttribute("result", "⽂件不存在!下载失败!");request.getRequestDispatcher("/fildeOp.jsp").forward(request, response);}}以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。

Java实现一个简单的文件上传案例示例代码

Java实现一个简单的文件上传案例示例代码

Java实现⼀个简单的⽂件上传案例⽰例代码Java实现⼀个简单的⽂件上传案例实现流程:1.客户端从硬盘读取⽂件数据到程序中2.客户端输出流,写出⽂件到服务端3.服务端输出流,读取⽂件数据到服务端中4.输出流,写出⽂件数据到服务器硬盘中下⾯上代码上传单个⽂件服务器端package FileUpload;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import .ServerSocket;import .Socket;public class Server {public static void main(String[] args) throws IOException {System.out.println("服务器端启动");//创建⼀个服务器端对象ServerSocket serverSocket = new ServerSocket(8888);//使⽤accept获取socket对象Socket accept = serverSocket.accept();//使⽤字节输⼊流读取InputStream inputStream = accept.getInputStream();//创建⼀个字节输出流输出到本地FileOutputStream fileOutputStream = new FileOutputStream("F:\\this\\copy1.jpg",true);//创建⼀个数组循环读取byte[] bytes = new byte[1024];int len;while ((len=inputStream.read(bytes))!=-1){fileOutputStream.write(bytes,0,len);}System.out.println("执⾏完毕");fileOutputStream.close();inputStream.close();}}客户端package FileUpload;import java.io.FileInputStream;import java.io.IOException;import java.io.OutputStream;import .Socket;public class Client {public static void main(String[] args) throws IOException {//创建⼀个Socket对象Socket socket = new Socket("127.0.0.1", 8888);//读取本地⽂件FileInputStream fileInputStream = new FileInputStream("F:\\1.jpeg");//获取输出流向服务器写⼊数据OutputStream outputStream = socket.getOutputStream();//创建数组读取byte[] bytes = new byte[1024];int len;//边都边写while((len=fileInputStream.read(bytes))!=-1){outputStream.write(bytes,0,len);outputStream.flush();}//由于不会写⼊-1所以调⽤socket的shutdownOutput⽅法把前⾯的数据都写⼊并且正常终⽌后⾯的序列 socket.shutdownOutput();System.out.println("⽂件发送完毕");fileInputStream.close();outputStream.close();socket.close();}}循环上传客户端代码package FileUpload;import java.io.FileInputStream;import java.io.IOException;import java.io.OutputStream;import .Socket;public class Client {public static void main(String[] args) throws IOException {//创建⼀个Socket对象Socket socket = new Socket("127.0.0.1", 8888);//读取本地⽂件FileInputStream fileInputStream = new FileInputStream("F:\\1.jpeg");//获取输出流向服务器写⼊数据OutputStream outputStream = socket.getOutputStream();//创建数组读取byte[] bytes = new byte[1024];int len;//边都边写while((len=fileInputStream.read(bytes))!=-1){outputStream.write(bytes,0,len);outputStream.flush();}//由于不会写⼊-1所以调⽤socket的shutdownOutput⽅法把前⾯的数据都写⼊并且正常终⽌后⾯的序列 socket.shutdownOutput();System.out.println("⽂件发送完毕");fileInputStream.close();outputStream.close();socket.close();}}服务器端代码package FileUpload;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import .ServerSocket;import .Socket;public class Server {public static void main(String[] args) throws IOException {System.out.println("服务器端启动");//创建⼀个服务器端对象ServerSocket serverSocket = new ServerSocket(8888);//使⽤while()持续写⼊数据while(true){//使⽤accept获取socket对象Socket accept = serverSocket.accept();//Socket对象交给⼦线程处理,进⾏读写操作,new Thread(() ->{{//使⽤字节输⼊流读取InputStream inputStream = null;try {//⽂件名String name = new String("F:\\this\\"+ System.currentTimeMillis()+"copy1.jpg" );inputStream = accept.getInputStream();//创建⼀个字节输出流输出到本地FileOutputStream fileOutputStream = new FileOutputStream(name,true);//创建⼀个数组循环读取byte[] bytes = new byte[1024];int len;while ((len=inputStream.read(bytes))!=-1){fileOutputStream.write(bytes,0,len);}System.out.println("执⾏完毕");fileOutputStream.close();inputStream.close();} catch (IOException e) {e.printStackTrace();}}}).start();}}}循环输⼊⽆⾮就是增加了⼀个while循环与⼀点多线程的知识,以上就是⼀个⽂件上传的⼀个简单案例,到此这篇关于Java实现⼀个简单的⽂件上传案例⽰例代码的⽂章就介绍到这了,更多相关Java实现⽂件上传案例内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。

java实现文件上传和下载

java实现文件上传和下载

java实现⽂件上传和下载本⽂实例为⼤家分享了java实现⽂件上传和下载的具体代码,供⼤家参考,具体内容如下⽂件的上传upload:⽂件上传客户端通过表单的⽂件域file 把客户端的⽂件上传保存到服务器的硬盘上页⾯⾸先对上传的表单有以下要求:必须有⽂件域:input type=file表单提交⽅式:method=post表单的 enctype=multipart/form-data<form method="post" action="/user/regist" enctype="multipart/form-data"><table style="border: chartreuse;solid:2px"><tr><th>⽤户名</th><td><input type="text" name="username"></td></tr><tr><th>密码</th><td><input type="password" name="password"></td></tr><tr><th>⽤户头像</th><td><input type="file" name="photo"> </td></tr><tr><td colspan="2"><input type="submit" value="提交"></td></tr></table></form>Servlet1)⾸先要导⼊以下两个jar包,通过commons-fileupload实现⽂件上传2)创建⼀个⼯⼚对象DiskFileItemFactory,在创建⼀个多部件表单解析器ServletFileUpload,构造⽅法传⼊⼯⼚对象3)解析器解析请求对象,获得⼀个list集合,其中list集合存储的是⼀个⼀个的fileItem对象,⼀个fileItem对应⼀个组件,也就是⼀个<input>4) 遍历集合⽤isFormField()⽅法判断是否为普通组件,然后着重处理⽂件域组件5)获取⽂件名,并⽤getRealPath⽅法获取服务器上传⽂件所在路径,创建新⽂件夹6)获取输⼊流和创建输出流,进⾏⽂件的读写@WebServlet(value = "/user/regist")public class UploadServlet extends HttpServlet {protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//创建⼀个⼯⼚对象DiskFileItemFactory factory = new DiskFileItemFactory();//创建⼀个多部件解析器对象ServletFileUpload fileUpload = new ServletFileUpload(factory);User user = new User();FileOutputStream out=null;try {//⽤解析器对象解析请求,返回⼀个FileItem类型的集合List<FileItem> list = fileUpload.parseRequest(req);for (FileItem fileItem : list) {/*** fileItem.getFieldName());:::获取组件的name值* fileItem.getName());::::获取⽂件域的⽂件名* fileItem.getSize());::::获取数据的字节个数* fileItem.getString());::::获取数据的字符串* fileItem.isFormField());:::判断是否为普通组件*///判断部件是否为普通组件if (fileItem.isFormField()) {//普通组件//获取组件名字也就是name的值String fieldName = fileItem.getFieldName();//获取组件的值也就是value的值String value = fileItem.getString("utf-8");if ("username".equals(fieldName)) { //设置实体类的属性user.setUsername(value);} else if ("password".equals(fieldName)) {user.setPassword(value);}} else {// ⽂件域//获取⽂件名String fielName = fileItem.getName();//输⼊流来读数据InputStream in = fileItem.getInputStream();//设置⽂件写出的路径,并⽤随机码来保证图⽚可以重复String path=req.getServletContext().getRealPath("/imgs/"+ UUID.randomUUID()+fielName);System.out.println("⽂件路径为:"+path);File file = new File(path);out = new FileOutputStream(file);//利⽤commons-io-1.4.jar的IOUtils的copy⽅法直接实现⽂件的复制IOUtils.copy(in,out);user.setPhoto(file.getName());}}} catch (Exception e) {e.printStackTrace();}finally {if(out!=null){out.close();}}req.getSession().setAttribute("user",user);req.getRequestDispatcher("/sucess.jsp").forward(req,resp);}}⽂件的下载页⾯只需⼀个超链接,传需要下载的⽂件名,或者直接输⼊路径在浏览器例: <a href="<c:url value='/file/download?fileName=14.jpg'/>" >狗狗1</a><br/>Servlet1)接收参数,获取⽂件名2)获取imgs的路径,也就是存储⽂件的⽂件夹的路径,然后创建⽂件,传⼊该路径和⽂件名3)创建输⼊流读取⽂件4)设置响应头,⾸先根据⽂件名字获取⽂件的⼤类型,设置响应头Content-Type指定响应的类型;设置响应头Content-Disposition,指定⽂件以附件形式保存到本地磁盘5)⽤响应获取输出流,读出⽂件到客户端@WebServlet("/user/download")public class DownloadServlet extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("UTF-8");//获取要下载的⽂件名String fileName = request.getParameter("fileName");System.out.println(fileName);//获取服务器中存储图⽚的⽂件夹的路径String path1 = request.getServletContext().getRealPath("/imgs");String path=path1+"/"+fileName;File file = new File(path);//创建输⼊流读⽂件FileInputStream in = new FileInputStream(file);//通过⽂件名字获取⽂件的⼤类型String type = request.getServletContext().getMimeType(fileName);//设置响应头ContentType指定响应内容的类型response.setHeader("Content-type",type);//设置响应头Content-Disposition 指定以附件形式保存响应的信息response.setHeader("Content-Disposition","attachment;filename="+(URLEncoder.encode(fileName, "utf-8"))); ServletOutputStream out = response.getOutputStream();//实现⽂件的读写IOUtils.copy(in,out);if(in!=null){in.close();}}}以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。

fastdfs上传文件的java写法

fastdfs上传文件的java写法

FastDFS是一个开源的分布式文件系统,它是基于C/S架构设计的,能够提供高性能的文件存储和访问服务。

在实际的项目开发中,我们经常会使用FastDFS来存储大量的文件,比如图片、视频等。

本文将介绍如何使用Java语言来实现FastDFS的文件上传功能。

1. 引入依赖要在Java中使用FastDFS,首先需要引入FastDFS的客户端依赖。

通常我们会使用第三方封装好的jar包来操作FastDFS,比如.github.tobato:fastdfs-client"。

可以在Maven或Gradle中添加以下依赖:```xml<dependency><groupId.github.tobato</groupId><artifactId>fastdfs-client</artifactId><version>1.26.3</version></dependency>```2. 初始化FastDFS客户端在使用FastDFS之前,首先需要初始化FastDFS客户端。

我们可以通过配置文件来指定FastDFS的Tracker服务器位置区域,以及一些其他的参数。

以下是一个示例配置文件fastdfs-client.properties:```fastdfs.tracker_servers = 192.168.0.192:22122fastdfs.connect_timeout = 5work_timeout = 30fastdfs.charset = UTF-8```在Java代码中,我们可以通过以下方式来初始化FastDFS客户端:```javaClientGlobal.init("/path/to/fastdfs-client.properties");```3. 实现文件上传功能接下来我们将介绍如何在Java中实现FastDFS的文件上传功能。

JAVA中的文件上传

JAVA中的文件上传

SmartUpload上传图片目标:在Jsp页面中实现文件上传初级篇文件上传是我们程序中会经常使用到的功能,针对于上传的技术也非常多!那么在此介绍两种常用简单的上传方式上传方式一:使用SmartUpload组建进行上传上传方式二:使用Struts的<html:file>标签进行上传我们新建一个Java Web工程,这里使用纯粹的jsp进行上传和显示功能的实现。

我们需要在我们的工程中添加smartUpload.jar包之后我们编写index.jspIndex.jsp ViewIndex.jsp Source需要注意的设置表单的enctype="multipart/form-data"这个值我们可以再Dreamweaver中选我们将表单提交到另一个处理上传请求的doUploadjsp页面我们现在编写处理文件上传的页面doUpload.jsp下面是doUpload.jsp页面中的源代码<%@page language="java"import="java.util.*"pageEncoding="GBK"%><%@page import="com.jspsmart.upload.File"%><%@page import="com.jspsmart.upload.Files"%><%@page import="com.jspsmart.upload.SmartUpload"%><%//实例化上传组件SmartUpload upload=new SmartUpload();//初始化上传组件upload.initialize(this.getServletConfig(),request,response);//开始上传upload.upload();//获取上传的文件列表对象Files f=upload.getFiles();//获取文件对象File fil=f.getFile(0);//去的文件后缀String ext=fil.getFileExt();//判断文件类型是否是jpg格式if(!(ext.equals("jpg"))){out.println("<script type='text/javascript'>alert('文件类型错误');location.replace('index.jsp');</script>");return;}//满足条件进行文件的上传需要注意的是upload使我们webRoot文件夹下的一个目录fil.saveAs("upload/"+fil.getFileName());%>至此我们就完成了一个最简单的图片上传示例。

微信小程序图片上传java后台(前后端代码)

微信小程序图片上传java后台(前后端代码)

微信⼩程序图⽚上传java后台(前后端代码)⼩程序代码upload:function(e){var that = this;wx.showActionSheet({itemList: ['从相册选择','拍照'],itemColor:"#f7982a",success:function(res){if(!res.cancer){if (res.tapIndex==0){that.chooseWxImageShop('album');} else if (res.tapIndex == 1) {that.chooseWxImageShop('camera')}}}})},chooseWxImageShop: function (type) {var that = this;wx.chooseImage({sizeType: ['original', 'compressed'],sourceType: [type],success: function (res) {/*上传单张that.data.orderDetail.shopImage = res.tempFilePaths[0],that.upload_file(API_URL + 'shop/shopIcon', res.tempFilePaths[0])*/// 上传多张(遍历数组,⼀次传⼀张)for (var index in res.tempFilePaths) {that.upload_file('后台接⼝地址', res.tempFilePaths[index])}}})},upload_file: function (url, filePath) {var that = this;wx.uploadFile({url: url,filePath: filePath,name: 'imagefile',header: {'content-type': 'multipart/form-data'}, // 设置请求的 headerformData: { 'guid':"procomment" }, // HTTP 请求中其他额外的 form datasuccess: function (res) {console.log(JSON.parse(res.data).msg)},fail: function (res) {}})}后台代码public String doUpload(HttpServletRequest request, HttpServletResponse response,@RequestParam(value = "imagefile", required = false) MultipartFile imagefile)throws Exception {try {String type = imagefile.getOriginalFilename().substring(imagefile.getOriginalFilename().lastIndexOf(".")).toLowerCase();File targetFile = new File("D:/images/upload/" , type);if (!targetFile.exists()) {targetFile.mkdirs();}imagefile.transferTo(targetFile);return type} catch (Exception e) {return "上传失败"}。

Java通用文件上传功能实现

Java通用文件上传功能实现

Java通用文件上传功能实现一、文件上传流程说明:Java文件上传功能是指在Java开发中,实现文件上传的功能,可以用于各种场景,如网站上传图片、文件管理系统等。

以下是一种常见的实现方式:1、创建一个包含文件上传功能的表单页面,用户可以选择要上传的文件并提交表单。

2、在后端Java代码中,接收表单提交的文件数据。

可以使用Apache Commons FileUpload库或Spring框架提供的MultipartFile类来处理文件上传。

3、对接收到的文件进行处理,可以将文件保存到服务器的指定位置,或者将文件存储到数据库中。

4、返回上传成功或失败的信息给用户。

二、代码实现,方案一:在Java中实现文件上传功能可以通过以下步骤来完成:1、创建一个HTML表单,用于选择要上传的文件:<form action="upload"method="post" enctype="multipart/form-data"> <input type="file" name="file" /><input type="submit" value="Upload" /></form>2、创建一个Servlet或者Controller来处理文件上传请求:@WebServlet("/upload")public class UploadServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) {// 获取上传的文件Part filePart = request.getPart("file");String fileName = filePart.getSubmittedFileName();// 指定上传文件的保存路径String savePath = "C:/uploads/" + fileName;// 将文件保存到指定路径filePart.write(savePath);// 返回上传成功的消息response.getWriter().println("File uploaded successfully!");}}3、配置web.xml(如果使用传统的Servlet方式)或者使用注解(如果使用Servlet 3.0+)来映射Servlet。

JavaMultipartFile实现上传文件上传图片

JavaMultipartFile实现上传文件上传图片

JavaMultipartFile实现上传⽂件上传图⽚1. 判断允许上传⽂件的⽂件后缀/图⽚后缀/相⽚后缀和其它⼯具类import ponent;import java.io.File;import java.util.Arrays;import java.util.List;@Componentpublic class FileUtil {public static final List<String> IMAGE_EXTENSIONS = Arrays.asList(".jpg", ".jpeg", ".png");}import java.util.UUID;public class CommonUtil {public static String getUUID() {String uuid = UUID.randomUUID().toString().replaceAll("-", "");return uuid;}}import java.time.LocalDateTime;import java.time.format.DateTimeFormatter;public class DateUtil {public static final String HH = "HH";public static final String YYYY_MM_DD = "yyyy-MM-dd";public static final DateTimeFormatter FORMATTER_HH = DateTimeFormatter.ofPattern(HH);public static final DateTimeFormatter FORMATTER_YYYY_MM_DD = DateTimeFormatter.ofPattern(YYYY_MM_DD);public static String getHH() {return FORMATTER_HH.format(LocalDateTime.now());}public static String getYYYYMMDD() {return FORMATTER_YYYY_MM_DD.format(LocalDateTime.now());}}2. 上传接⼝@PostMapping("/updateImage.do")public Map<String, String> updateImage(@RequestParam("image") MultipartFile[] multfiles) {Map<String, String> result = new HashMap<>();if (multfiles.length == 0) {result.put("message", "请选择图⽚!");return result;}// 源⽂件名称final String originalFileName = multfiles[0].getOriginalFilename();if (StringUtils.isBlank(originalFileName)) {result.put("message", "请选择图⽚!");return result;}// ⽂件后缀[.jpg]final String suffix = originalFileName.substring(stIndexOf(".")).toLowerCase();if (!FileUtil.IMAGE_EXTENSIONS.contains(suffix)) {result.put("message", "图⽚格式错误!");return result;}String lastFilePath;String newFileName = CommonUtil.getUUID() + suffix;String folderName = File.separator + "temp" + File.separator;String relativePath = folderName + DateUtil.getYYYYMMDD() + File.separator + DateUtil.getHH();String filePath = "D:\\file" + relativePath;String fileUrl = null;File targetFile = new File(filePath);if (!targetFile.exists()) {targetFile.mkdirs();}FileOutputStream out = null;try {lastFilePath = filePath + File.separator + newFileName;out = new FileOutputStream(lastFilePath);out.write(multfiles[0].getBytes());fileUrl = "http://127.0.0.1:9000" + relativePath + File.separator + newFileName;} catch (Exception e) {e.printStackTrace();} finally {if (out != null) {try {out.flush();} catch (IOException e) {e.printStackTrace();}try {out.close();} catch (IOException e) {e.printStackTrace();}}}if (fileUrl == null) {result.put("message", "图⽚上传失败!");return result;}result.put("message", "上传成功!");result.put("url", fileUrl);return result;}3. 上传成功url => http://127.0.0.1:9000/temp/2019-09-12/14/0eac00b96f134652b34172e84febe8d1.jpg以上就是Java MultipartFile实现上传⽂件/上传图⽚的详细内容,更多关于Java MultipartFile上传⽂件的资料请关注其它相关⽂章!。

jimageupload的用法

jimageupload的用法

jimageupload的用法jImageUpload是一个简单且易于使用的Java图像上传库。

它为开发人员提供了一种便捷的方式来实现图像上传功能。

以下是jImageUpload的几种用法:1. 添加依赖:要在项目中使用jImageUpload,首先需要在项目的构建文件中添加相应的依赖。

例如,如果您使用Maven构建项目,可以在pom.xml文件中添加以下依赖项:```<dependency><groupId>com.github.wangtonghe</groupId><artifactId>jimageupload</artifactId><version>1.0.0</version></dependency>```2. 初始化jImageUpload:要使用jImageUpload,在您的Java代码中导入jImageUpload库,并创建一个jImageUpload对象。

您可以通过调用`JImageUpload()`构造函数来实现。

```javaimport com.github.wangtonghe.jimageupload.JImageUpload;public class Main {public static void main(String[] args) {JImageUpload jImageUpload = new JImageUpload();// 其他代码...}}```3. 设置上传配置:在使用jImageUpload之前,您可以对上传过程进行配置。

例如,您可以设置上传文件的最大大小、允许的文件类型等参数。

以下是一个示例:```javaimport com.github.wangtonghe.jimageupload.JImageUpload;import com.github.wangtonghe.jimageupload.config.UploadConfig;public class Main {public static void main(String[] args) {JImageUpload jImageUpload = new JImageUpload();UploadConfig uploadConfig = new UploadConfig();uploadConfig.setMaxSize(10 * 1024 * 1024); // 设置上传文件的最大大小为10MBuploadConfig.setAllowedTypes("jpg", "png", "gif"); // 仅允许上传jpg、png、gif 文件jImageUpload.setUploadConfig(uploadConfig);// 其他代码...}}```4. 处理上传请求:使用jImageUpload的一个主要目的是处理图像上传请求。

微信小程序文件上传Java(附代码)

微信小程序文件上传Java(附代码)

微信⼩程序⽂件上传Java(附代码)微信⼩程序+Springboot实现⽂件上传微信⼩程序代码API接⼝:1.从客户端选择⽂件:使⽤⽅法:wx.chooseMessageFile({count: 10,type: 'image',success (res) {// tempFilePath可以作为img标签的src属性显⽰图⽚const tempFilePaths = res.tempFiles}})2.上传⽂件:使⽤⽅法:wx.chooseImage({success (res) {const tempFilePaths = res.tempFilePathswx.uploadFile({url: 'https:///upload', //仅为⽰例,⾮真实的接⼝地址filePath: tempFilePaths[0],name: 'file',formData: {'user': 'test'},success (res){const data = res.data//do something}})}})upload.wxml1<view>2<button bindtap="upImage">上传图⽚</button>3</view>4<view>5<button bindtap="upFile">上传⽂件</button>6</view>upload.jsupImage: function() {wx.chooseImage({count: 1,sizeType: ['original', 'compressed'],sourceType: ['album', 'camera'],success: function(res) {const tempFilePaths = res.tempFilePathswx.uploadFile({url: 'http://localhost/picture',filePath: tempFilePaths[0],name: 'file',success(res) {console.log("success")console.log(res)},fail(res) {console.log("失败")console.log(res)}})},})},upFile: function() {wx.chooseMessageFile({count: 1,type: 'file',success(res) {const tempFilePaths = res.tempFileswx.uploadFile({url: 'http://localhost/picture',filePath: tempFilePaths[0].path,name: 'file',success(res) {console.log("success")console.log(res)},fail(res) {console.log("失败")console.log(res)}})}})},Java代码upload.java@RequestMapping(value = "/picture", method = RequestMethod.POST)public String uploadPicture(HttpServletRequest request, HttpServletResponse response, @RequestParam("file") MultipartFile files) throws Exception { try {System.out.println("图⽚上传请求成功");String type = files.getOriginalFilename().substring(files.getOriginalFilename().lastIndexOf("."));String path = "E:/demo/image/upload";File fileParent = new File(path);if (!fileParent.exists()) {fileParent.mkdirs();}File targetFile = new File(path + "/", files.getOriginalFilename());if (!targetFile.exists()) {targetFile.createNewFile();}files.transferTo(targetFile);return files.getOriginalFilename();} catch (Exception e) {return "上传失败";}}服务器配置注意项如果抛出以下异常请检查域名配置是否正确如果域名配置正确并且 wx.uploadFile 中 url 参数准确⽆误尝试以下办法。

java实现上传网络图片到微信临时素材

java实现上传网络图片到微信临时素材

java实现上传⽹络图⽚到微信临时素材本⽂实例为⼤家分享了java实现上传⽹络图⽚到微信临时素材的具体代码,供⼤家参考,具体内容如下package org.afuos.playcontrol.service;import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.JSONObject;import java.io.*;import .HttpURLConnection;import .URL;/*** Created by Mohon on 2017/8/10.*/public class UploadPicToWx {/*** ⽹络图⽚上传到微信服务器** @param urlPath 图⽚路径* @return JSONObject* @throws Exception*/public String getMediaIdFromUrl(String urlPath, String fileType) throws Exception {String result = null;String url = "/cgi-bin/media/upload?access_token= Access_token &type=" + fileType + "";String fileName = urlPath.substring(stIndexOf("/") + 1);// 获取⽹络图⽚URL mediaUrl = new URL(urlPath);HttpURLConnection meidaConn = (HttpURLConnection) mediaUrl.openConnection();meidaConn.setDoOutput(true);meidaConn.setRequestMethod("GET");/*** 第⼀部分*/URL urlObj = new URL(url);HttpURLConnection con = (HttpURLConnection) urlObj.openConnection();con.setRequestMethod("POST"); // 以Post⽅式提交表单,默认get⽅式con.setDoInput(true);con.setDoOutput(true);con.setUseCaches(false); // post⽅式不能使⽤缓存// 设置请求头信息con.setRequestProperty("Connection", "Keep-Alive");con.setRequestProperty("Charset", "UTF-8");// 设置边界String BOUNDARY = "----------" + System.currentTimeMillis();con.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + BOUNDARY);// 请求正⽂信息// 第⼀部分:StringBuilder sb = new StringBuilder();sb.append("--"); // 必须多两道线sb.append(BOUNDARY);sb.append("\r\n");sb.append("Content-Disposition: form-data;name=\"media\";filename=\"" + fileName + "\"\r\n");sb.append("Content-Type:application/octet-stream\r\n\r\n");byte[] head = sb.toString().getBytes("utf-8");// 获得输出流OutputStream out = new DataOutputStream(con.getOutputStream());// 输出表头out.write(head);// ⽂件正⽂部分// 把⽂件已流⽂件的⽅式推⼊到url中DataInputStream in = new DataInputStream(meidaConn.getInputStream());int bytes = 0;byte[] bufferOut = new byte[1024];while ((bytes = in.read(bufferOut)) != -1) {out.write(bufferOut, 0, bytes);}in.close();// 结尾部分byte[] foot = ("\r\n--" + BOUNDARY + "--\r\n").getBytes("utf-8");// 定义最后数据分隔线out.write(foot);out.flush();out.close();meidaConn.disconnect();StringBuffer buffer = new StringBuffer();BufferedReader reader = null;try {// 定义BufferedReader输⼊流来读取URL的响应reader = new BufferedReader(new InputStreamReader(con.getInputStream()));String line = null;while ((line = reader.readLine()) != null) {buffer.append(line);}if (result == null) {result = buffer.toString();}} catch (IOException e) {("发送POST请求出现异常! {}", e);e.printStackTrace();throw new IOException("数据读取异常");} finally {if (reader != null) {reader.close();}}JSONObject jsonObj = JSON.parseObject(result);("getMediaId jsonObj: {}", jsonObj);return jsonObj.getString("media_id");}}来源:以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。

java实现文件上传下载功能

java实现文件上传下载功能

java实现⽂件上传下载功能本⽂实例为⼤家分享了java实现⽂件上传下载的具体代码,供⼤家参考,具体内容如下1.上传单个⽂件Controller控制层import java.io.File;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.multipart.MultipartFile;import org.springframework.web.servlet.mvc.support.RedirectAttributes;@Controller@RequestMapping("testup")public class UploadController {private static Logger LG= LoggerFactory.getLogger(UploadController.class);/*** 9.①单个⽂件上传* @param file* @param redirectAttributes* @return*/@RequestMapping(value="/upload",method=RequestMethod.POST,consumes="multipart/form-data")public String uploadFile(@RequestParam MultipartFile file,RedirectAttributes redirectAttributes){if(file.isEmpty()){redirectAttributes.addFlashAttribute("message", "Plse select file");return "redirect:/test/index";}try {String fileName=file.getOriginalFilename();/*上传⽂件存储位置*/String destFileName="D:\\whupload"+File.separator+fileName;File destFile=new File(destFileName);file.transferTo(destFile);//⽂件上传成功显⽰//redirectAttributes.addAttribute("message","upload file success.");redirectAttributes.addFlashAttribute("message", "upload file success.");} catch (Exception e) {//⽂件上传失败显⽰redirectAttributes.addFlashAttribute("message", "upload file fail");LG.debug(e.getMessage());}return "redirect:/test/index";}}前端页⾯源码<p>上传⽂件,使⽤multipart/form-data类型</p><form action="/testup/upload" method="post" enctype="multipart/form-data"><input type="file" name="file"><button type="submit">上传</button></form>2.上传多个⽂件Controller控制层import java.io.File;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.multipart.MultipartFile;import org.springframework.web.servlet.mvc.support.RedirectAttributes;@Controller@RequestMapping("testup")public class UploadController {private static Logger LG= LoggerFactory.getLogger(UploadController.class);/*** 9.②多个⽂件上传*/@RequestMapping(value="/uploadBatchFile",method=RequestMethod.POST,consumes="multipart/form-data") public String uploadBatchFile(@RequestParam MultipartFile[] files,RedirectAttributes redirectAttributes){boolean isEmpty=true;try {for (MultipartFile multipartFile : files) {if(multipartFile.isEmpty()){continue;}String fileName=multipartFile.getOriginalFilename();String destFileName="D:\\whupload"+File.separator+fileName;File destFile=new File(destFileName);multipartFile.transferTo(destFile);isEmpty=false;}//int i=1/0;//localhost:8086/test/index?message=upload file success//redirectAttributes.addAttribute("message","upload file success.");} catch (Exception e) {// TODO Auto-generated catch blockredirectAttributes.addFlashAttribute("message", "upload file fail");LG.debug(e.getMessage());return "redirect:/test/index";}if(isEmpty){redirectAttributes.addFlashAttribute("message", "Plse select file");}else{redirectAttributes.addFlashAttribute("message", "upload file success.");}return "redirect:/test/index";}}前端页⾯源码<form action="/testup/uploadBatchFile" method="post" enctype="multipart/form-data"><input type="file" name="files"><input type="file" name="files"><button type="submit">上传</button></form>3.下载⽂件Controller控制器import java.io.File;import .MalformedURLException;import java.nio.file.Paths;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.core.io.Resource;import org.springframework.core.io.UrlResource;import org.springframework.http.HttpHeaders;import org.springframework.http.ResponseEntity;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.ResponseBody;@Controller@RequestMapping("testup")public class UploadController {private static Logger LG= LoggerFactory.getLogger(UploadController.class);/*** 10.下载⽂件*/@RequestMapping("/download")@ResponseBodypublic ResponseEntity<Resource> downloadFile(@RequestParam String fileName){try {Resource resource=new UrlResource(//拼接下载的⽂件的原路径Paths.get("D:/whupload"+File.separator+fileName).toUri());if(resource.exists() && resource.isReadable()){return ResponseEntity.ok().header(HttpHeaders.CONTENT_TYPE, "application/octet-stream").header(HttpHeaders.CONTENT_DISPOSITION,"attachment;filename=\""+resource.getFilename()+"\"").body(resource);}} catch (MalformedURLException e) {// TODO Auto-generated catch blocke.printStackTrace();LG.debug(e.getMessage());}return null;}}前端页⾯源码<p>下载⽂件,这⾥设置默认下载⽂件为Demo.txt,fileName是下载⽂件名</p><a href="/testup/download?fileName=Demo.txt" rel="external nofollow" >download file</a>运⾏效果最后,需要注意的是,⽂件上传有默认的⼤⼩限制在配置⽂件中加⼊,即可消除限制spring.servlet.multipart.max-file-size=-1spring.servlet.multipart.max-request-size=-1以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。

【Java】【SpringBoot】基于BASE64的图片上传、存储

【Java】【SpringBoot】基于BASE64的图片上传、存储

【Java】【SpringBoot】基于BASE64的图⽚上传、存储前台上传控件:<input type="file" class="custom-file-input" id="homeImg" name='homeImg'/>JS提交://保存图⽚信息$scope.save = function () {var fd = new FormData();var file = document.getElementById('homeImg').files[0];fd.append('homeImg', file);$http.post(CommonConfig.RestBaseUrl.CaoBaoService + 'homeimgs/upload?id=' + $scope.detailInfo.id + '&sortNum=' + $scope.detailInfo.sortNum, fd, CommonConfig.fileUploadReqConfig) .then(function (result) { //正确请求成功时处理console.log('save:result', result);if (result.data.code == 'NONE_ERROR') {$scope.modalContent = '保存成功!';$('#myModal').modal('show');$scope.getHomeImgs($scope.detailInfo.id);$scope.resetDetailInfo();}else {$scope.modalContent = '保存失败!';$('#myModal').modal('show');}}).catch(function (result) { //捕捉错误处理console.log(result);});};请求参数设置:CommonConfig.fileUploadReqConfig = {headers: { 'Content-Type':undefined },transformRequest:angular.identity};前台展⽰:<img src="data:image/png;base64,{{viewImgData}}"width="100%"height="100%"alt="⽆法显⽰"/>后台后台Model中⽤String存储即可。

java实现文件接收_Java实现文件上传

java实现文件接收_Java实现文件上传

java实现文件接收_Java实现文件上传1. 创建一个Servlet类,处理文件上传请求。

```javaimport java.io.File;import java.io.IOException;import java.util.List;import javax.servlet.ServletException;import javax.servlet.annotation.MultipartConfig;import javax.servlet.annotation.WebServlet;public class FileUploadServlet extends HttpServletprivate static final long serialVersionUID = 1L;protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException// 检查请求是否为multipart/form-data类型if (!ServletFileUpload.isMultipartContent(request))response.getWriter(.println("Error: Form must has enctype=multipart/form-data.");response.setStatus(HttpServletResponse.SC_BAD_REQUEST);return;}// 创建一个DiskFileItemFactory对象,用于设置临时存储文件的目录和大小限制DiskFileItemFactory factory = new DiskFileItemFactory(;factory.setSizeThreshold(1024 * 1024); // 设置内存缓冲区大小为1MBfactory.setRepository(newFile(System.getProperty("java.io.tmpdir"))); // 设置临时文件目录// 创建ServletFileUpload对象,并设置上传文件的最大大小限制ServletFileUpload upload = new ServletFileUpload(factory);upload.setSizeMax(1024 * 1024 * 10); // 设置上传文件的最大大小为10MBtryList<FileItem> items = upload.parseRequest(request); // 解析请求中的所有文件项for (FileItem item : items)if (!item.isFormField() { // 判断当前文件项是否为普通表单字段String fileName = new File(item.getName().getName(; // 获取文件名String filePath = "C:/upload/" + fileName; // 设置文件保存路径item.write(new File(filePath)); // 保存文件到服务器response.getWriter(.println("File uploaded successfully: " + fileName);}}} catch (FileUploadException e)response.getWriter(.println("Error: " + e.getMessage();response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ER ROR);} catch (Exception e)response.getWriter(.println("Error: " + e.getMessage();response.setStatus(HttpServletResponse.SC_BAD_REQUEST);}}```2. 在web.xml中注册Servlet。

java学习案例-上传文件

java学习案例-上传文件

客户端向服务端上传文件【案例介绍】1.案例描述编写一个客户端向服务端上传文件的程序,要求使用TCP通信的的知识,将本地机器输入的路径下的文件上传到D盘中名称为upload的文件夹中。

并把客户端的IP地址加上count标识作为上传后文件的文件名,即IP(count)的形式。

其中,count随着文件的增多而增大,例如127.0.0.(1).jpg、127.0.0.(2).jpg。

2.效果显示上传文件之前上传文件之后【案例目标】●学会分析“文件上传”思路。

●根据思路独立完成“文件上传”任务的源代码编写、编译及运行。

●掌握网络通信中TCP协议的编程原理。

●掌握TCP网络通信ServerSocket和Socket的使用。

●掌握多线程的使用。

【案例分析】(1)根据任务描述中使用TCP通信的知识实现文件上传功能可知,要实现此功能,需要定义一个服务器接收文件的程序和一个客户端上传文件的程序。

(2)首先要编写服务器端程序来接收文件。

服务器端需要使用ServerSocket对象的accept()方法接收客户端的请求,由于一个服务器可能对于多个客户端,所以当客户端与服务器端简历连接后,服务器需要单独开启一个新的线程来处理与客户端的交互,这时需要在服务器端编写开启新线程的方法。

在新线程的方法中,需要获取客户端的端口号,并且使用输入输出流来传输文件到指定的目录中。

(3)编写客户端的功能代码,客户端功能的实现,因为是用户自己输入上传文件。

所以要定义键盘录入。

录入后需要使用Socket类来创建客户对象,并通过输入输出流来定义指定的文件。

(4)最后我们启动程序,先启动服务端程序,再运行客户端程序来测试上传的结果。

【案例实现】(1)首先编写服务器端的程序,用来接收文件,其代码具体如下所示。

FileServer.java1 package chapter0903;2 import java.io.File;3 import java.io.FileOutputStream;4 import java.io.InputStream;5 import java.io.OutputStream;6 import .ServerSocket;7 import .Socket;8 public class FileServer {9 public static void main(String[] args) throws Exception {10 //创建ServerSocket对象11 ServerSocket serverSocket = new ServerSocket(10001);12 while (true) {13 // 调用accept()方法接收客户端请求,得到Socket对象14 Socket s = serverSocket.accept();15 // 每当和客户端建立Socket连接后,单独开启一个线程处理和客户端的交互16 new Thread(new ServerThread(s)).start();17 }18 }19 }20 class ServerThread implements Runnable {21 // 持有一个Socket类型的属性22 private Socket socket;23 // 构造方法中把Socket对象作为实参传入24 public ServerThread(Socket socket) {25 this.socket = socket;26 }27 public void run() {28 // 获取客户端的IP地址29 String ip = socket.getInetAddress().getHostAddress();30 // 上传图片个数31 int count = 1;32 try {33 InputStream in = socket.getInputStream();34 // 创建上传图片目录的File对象35 File parentFile = new File("D:\\upload\\");36 // 如果不存在,就创建这个目录37 if (!parentFile.exists()) {38 parentFile.mkdir();39 }40 // 把客户端的IP地址作为上传文件的文件名41 File file = new File(parentFile, ip + "(" + count +42 ").jpg");43 while (file.exists()) {44 // 如果文件名存在,则把count++45 file = new File(parentFile, ip + "(" + (count++) +46 ").jpg");47 }48 // 创建FileOutputStream对象49 FileOutputStream fos = new FileOutputStream(file);50 // 定义一个字节数组51 byte[] buf = new byte[1024];52 // 定义一个int类型的变量len,初始值为053 int len = 0;54 // 循环读取数据55 while ((len = in.read(buf)) != -1) {56 fos.write(buf, 0, len);57 }58 // 获取服务端的输出流59 OutputStream out = socket.getOutputStream();60 // 上传成功后向客户端写出“上传成功”61 out.write("上传成功".getBytes());62 // 关闭输出流对象63 fos.close();64 // 关闭Socket对象65 socket.close();66 } catch (Exception e) {67 throw new RuntimeException(e);68 }69 }70 }运行结果如图所示。

Java实现上传文件图片到指定服务器目录

Java实现上传文件图片到指定服务器目录

Java实现上传⽂件图⽚到指定服务器⽬录具体代码如下所⽰:***web.xml***<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="/2001/XMLSchema-instance" xmlns="/xml/ns/javaee" xmlns:web="/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="/xml/ns/javaee /xm <servlet><servlet-name>fileUpload</servlet-name><servlet-class>.action.FileUpload</servlet-class></servlet><servlet-mapping><servlet-name>fileUpload</servlet-name><url-pattern>/fileUpload</url-pattern></servlet-mapping></web-app>package .action;import java.io.File;import java.io.*;import java.io.IOException;import java.util.List;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import mons.fileupload.FileItem;import mons.fileupload.FileUploadException;import mons.fileupload.disk.DiskFileItemFactory;import mons.fileupload.servlet.ServletFileUpload;/**** @author Administrator* ⽂件上传* 具体步骤:* 1)获得磁盘⽂件条⽬⼯⼚ DiskFileItemFactory 要导包* 2)利⽤ request 获取真实路径,供临时⽂件存储,和最终⽂件存储,这两个存储位置可不同,也可相同* 3)对 DiskFileItemFactory 对象设置⼀些属性* 4)⾼⽔平的API⽂件上传处理 ServletFileUpload upload = new ServletFileUpload(factory);* ⽬的是调⽤ parseRequest(request)⽅法获得 FileItem 集合list ,** 5)在 FileItem 对象中获取信息,遍历,判断表单提交过来的信息是否是普通⽂本信息另做处理* 6)* 第⼀种. ⽤第三⽅提供的 item.write( new File(path,filename) ); 直接写到磁盘上* 第⼆种. ⼿动处理**/public class FileUpload extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {request.setCharacterEncoding("utf-8"); //设置编码//获得磁盘⽂件条⽬⼯⼚DiskFileItemFactory factory = new DiskFileItemFactory();//获取⽂件需要上传到的路径String path = request.getRealPath("/upload1");// String path = "c:/upload1";//如果没以下两⾏设置的话,上传⼤的⽂件会占⽤很多内存,//设置暂时存放的存储室 , 这个存储室,可以和最终存储⽂件的⽬录不同/*** 原理它是先存到暂时存储室,然后在真正写到对应⽬录的硬盘上,* 按理来说当上传⼀个⽂件时,其实是上传了两份,第⼀个是以 .tem 格式的* 然后再将其真正写到对应⽬录的硬盘上*/factory.setRepository(new File(path));//设置缓存的⼤⼩,当上传⽂件的容量超过该缓存时,直接放到暂时存储室factory.setSizeThreshold(1024*1024) ;//⾼⽔平的API⽂件上传处理ServletFileUpload upload = new ServletFileUpload(factory);try {//可以上传多个⽂件List<FileItem> list = (List<FileItem>)upload.parseRequest(request);for(FileItem item : list){//获取表单的属性名字String name = item.getFieldName();//如果获取的表单信息是普通的⽂本信息if(item.isFormField()){//获取⽤户具体输⼊的字符串,名字起得挺好,因为表单提交过来的是字符串类型的String value = item.getString() ;request.setAttribute(name, value);}else{//对传⼊的⾮简单的字符串进⾏处理,⽐如说⼆进制的图⽚,电影这些/*** 以下三步,主要获取上传⽂件的名字*///获取路径名String value = item.getName() ;//索引到最后⼀个反斜杠int start = stIndexOf("\\");//截取上传⽂件的字符串名字,加1是去掉反斜杠,String filename = value.substring(start+1);request.setAttribute(name, filename);//真正写到磁盘上//它抛出的异常⽤exception 捕捉//item.write( new File(path,filename) );//第三⽅提供的//⼿动写的OutputStream out = new FileOutputStream(new File(path,filename));InputStream in = item.getInputStream() ;int length = 0 ;byte [] buf = new byte[1024] ;System.out.println("获取上传⽂件的总共的容量:"+item.getSize());// in.read(buf) 每次读到的数据存放在 buf 数组中while( (length = in.read(buf) ) != -1){//在 buf 数组中取出数据写到(输出流)磁盘上out.write(buf, 0, length);}in.close();out.close();}}}catch (FileUploadException e) {e.printStackTrace();}catch (Exception e) {e.printStackTrace();}request.getRequestDispatcher("filedemo.jsp").forward(request, response);}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}}***index.jsp***<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>上传⼊⼝</title></head><body><form action="fileUpload" enctype="multipart/form-data" method="post" >⽤户名称:<input type="text" name="usename"> <br/>上传图⽚:<input type="file" name="file1"><br/>上传⽂件:<input type="file" name="file2"><br/><input type="submit" value="提交"/></form></body></html>***filedemo.jsp***<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>上传⽂件图⽚案列</title></head><body>⽤户名称:${ename }<br />图⽚名称:${requestScope.file1 }<br />⽂件名称:${requestScope.file2 }<br /><!-- 把上传的图⽚显⽰出来 --><img alt="go" src="upload1/<%=(String) request.getAttribute("file1")%> " /></body></html>总结以上所述是⼩编给⼤家介绍的Java实现上传⽂件图⽚到指定服务器⽬录,希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。

SpringBoot实现图片上传功能

SpringBoot实现图片上传功能

SpringBoot实现图⽚上传功能本⽂实例为⼤家分享了Spring Boot图⽚上传的具体代码,供⼤家参考,具体内容如下package er;import java.io.File;import java.io.IOException;import java.util.HashMap;import java.util.Map;import ng3.StringUtils;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Value;import org.springframework.http.MediaType;import org.springframework.web.bind.annotation.PostMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.RestController;import org.springframework.web.multipart.MultipartFile;/*** ⽂件上传* @author Fly**/@RestControllerpublic class FileUpload {/*** ⽤户管理 -> 业务层*/@Autowiredprivate SUserService sUserService;/*** ⽂件上传根⽬录(在Spring的application.yml的配置⽂件中配置):<br>* web:* upload-path: (jar包所在⽬录)/resources/static/*/@Value("${web.upload-path}")private String webUploadPath;/*** ResultVo是⼀个对象,包含:* private int errorCode;* private String errorMsg;* private Integer total;* private Object data;*//*** 基于⽤户标识的头像上传* @param file 图⽚* @param userId ⽤户标识* @return*/@PostMapping(value = "/fileUpload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) public ResultVo fileUpload(@RequestParam("file") MultipartFile file, @RequestParam("userId") Integer userId) {ResultVo resultVo = new ResultVo();if (!file.isEmpty()) {if (file.getContentType().contains("image")) {try {String temp = "images" + File.separator + "upload" + File.separator;// 获取图⽚的⽂件名String fileName = file.getOriginalFilename();// 获取图⽚的扩展名String extensionName = StringUtils.substringAfter(fileName, ".");// 新的图⽚⽂件名 = 获取时间戳+"."图⽚扩展名String newFileName = String.valueOf(System.currentTimeMillis()) + "." + extensionName;// 数据库保存的⽬录String datdDirectory = temp.concat(String.valueOf(userId)).concat(File.separator);// ⽂件路径String filePath = webUploadPath.concat(datdDirectory);File dest = new File(filePath, newFileName);if (!dest.getParentFile().exists()) {dest.getParentFile().mkdirs();}// 判断是否有旧头像,如果有就先删除旧头像,再上传SUser userInfo = sUserService.findUserInfo(userId.toString());if (StringUtils.isNotBlank(userInfo.getUserHead())) {String oldFilePath = webUploadPath.concat(userInfo.getUserHead());File oldFile = new File(oldFilePath);if (oldFile.exists()) {oldFile.delete();}}// 上传到指定⽬录file.transferTo(dest);// 将图⽚流转换进⾏BASE64加码//BASE64Encoder encoder = new BASE64Encoder();//String data = encoder.encode(file.getBytes());// 将反斜杠转换为正斜杠String data = datdDirectory.replaceAll("\\\\", "/") + newFileName;Map<String, Object> resultMap = new HashMap<>();resultMap.put("file", data);resultVo.setData(resultMap);resultVo.setError(1, "上传成功!");} catch (IOException e) {resultVo.setError(0, "上传失败!");}} else {resultVo.setError(0, "上传的⽂件不是图⽚类型,请重新上传!");}return resultVo;} else {resultVo.setError(0, "上传失败,请选择要上传的图⽚!");return resultVo;}}}以上代码需配置SUserService,⼀个业务层接⼝;⼀个ResultVo对象,属性已给出;⼀个基于Spring Boot的 .yml配置⽂件的配置。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

java实现图片或文件的上传功能具体思路及代码
一、思路
文件是如何从本地发送到服务器的呢?
首先,我们创建一个新的web工程,在工程的WebRoot目录下新建一个upload文件夹,这样当我们将该工程部署到服务器上时,服务器便也生成个upload文件夹,用来存放上传的资源。

然后,在WebRoot目录下新建一个jsp文件,主要实现的作用就是选择上传的文件,提交至servlet来进行处理
详细代码如下:一个form将文件信息通过post方式传送到指定的servlet
二、代码
复制代码代码如下:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base <%=basePath%>">
<title>My JSP 'upload.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css">
-->
</head>
<body>
<form action="/upload/UpLoad" method="post" enctype="multipart/form-data">
请选择上传的图片或文件:<input type="file" name="fileName"/><input type="submit" value="上传"/>
</form>
</body>
</html>
可以看到,我们将数据提交到工程下的upload/UpLoad。

之后,我们就来编写这个servlet——UpLoad.java
复制代码代码如下:
package load;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import mons.fileupload.FileItem;
import mons.fileupload.FileUploadException;
import mons.fileupload.disk.DiskFileItemFactory;
import mons.fileupload.servlet.ServletFileUpload;
public class UpLoad extends HttpServlet {
@SuppressWarnings("unchecked")
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
//为解析类提供配置信息
DiskFileItemFactory factory = new DiskFileItemFactory();
//创建解析类的实例
ServletFileUpload sfu = new ServletFileUpload(factory);
//开始解析
sfu.setFileSizeMax(1024*400);
//每个表单域中数据会封装到一个对应的FileItem对象上
try {
List<FileItem> items = sfu.parseRequest(req);
//区分表单域
for (int i = 0; i < items.size(); i++) {
FileItem item = items.get(i);
//isFormField为true,表示这不是文件上传表单域
if(!item.isFormField()){
ServletContext sctx = getServletContext();
//获得存放文件的物理路径
//upload下的某个文件夹得到当前在线的用户找到对应的文件夹
String path = sctx.getRealPath("/upload");
System.out.println(path);
//获得文件名
String fileName = item.getName();
System.out.println(fileName);
//该方法在某些平台(操作系统),会返回路径+文件名
fileName = fileName.substring(stIndexOf("/")+1);
File file = new File(path+"\\"+fileName);
if(!file.exists()){
item.write(file);
//将上传图片的名字记录到数据库中
resp.sendRedirect("/upload/l");
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
三、小结
因为已对代码做了详细的注释,所以相信大家也能基本上传的这个过程。

要注意的一点是解析实例空间大小的设置。

我们希望上传的文件不会是无限大,因此,设置
复制代码代码如下:
.setFileSizeMax(1024*400);
在这儿我们也可以将其设置成一个条件,当文件大于最大值时向页面提交错误提示。

此外,也可以读取选择文件的后缀来筛选出可以上传的类型。

这些代码大家自己扩展,不再细谈。

通过servlet,将正确的文件传送到服务端的upload文件夹中。

这儿要注意,如果以后将工程从tomcat移除后,这些文件就会被自动删除。

上传结束之后,使页面转到上传成功页面l。

当用户看到此页面时,说明你已实现文件的上传功能。

相关文档
最新文档