SpringMVC图片文件跨服务器上传
程序员文章站
2024-01-20 21:50:28
图片文件跨服务器上传(我使用的公司云桌面作为上传服务器,自己的笔记本作为存储服务器测试的)
一、上传服务器:
1、pom文件(使用jersey插件)
<...
图片文件跨服务器上传(我使用的公司云桌面作为上传服务器,自己的笔记本作为存储服务器测试的)
一、上传服务器:
1、pom文件(使用jersey插件)
<!-- 上传组件包 --> <dependency> <groupid>commons-fileupload</groupid> <artifactid>commons-fileupload</artifactid> <version>1.3.1</version> </dependency> <dependency> <groupid>commons-io</groupid> <artifactid>commons-io</artifactid> <version>2.4</version> </dependency> <dependency> <groupid>commons-codec</groupid> <artifactid>commons-codec</artifactid> <version>1.9</version> </dependency> <!-- 夸服务器文件上传 --> <!-- https://mvnrepository.com/artifact/com.sun.jersey/jersey-client --> <dependency> <groupid>com.sun.jersey</groupid> <artifactid>jersey-client</artifactid> <version>1.18.6</version> </dependency> <!-- https://mvnrepository.com/artifact/com.sun.jersey/jersey-core --> <dependency> <groupid>com.sun.jersey</groupid> <artifactid>jersey-core</artifactid> <version>1.18.6</version> </dependency> <!-- https://mvnrepository.com/artifact/org.glassfish.jersey.core/jersey-common --> <dependency> <groupid>org.glassfish.jersey.core</groupid> <artifactid>jersey-common</artifactid> <version>2.26</version> </dependency>
2、前端页面:
<form action="${pagecontext.request.contextpath}/abc/uploadimg.do" enctype="multipart/form-data" method="post"> 多个文件: <input type="file" name="filelist" multiple/> <input type="submit" value="提交" /> </form>
3、后台controller:
/** * 多文件,跨服务器上传 * @param request * @return */ @responsebody @requestmapping("/uploadimg") public string fileupload(multiparthttpservletrequest request){ jsonobject joson = new jsonobject(); string serveraddress = "http://172.xxx.xxx.xxx:8080";//服务器地址 string folder = "/upload/";//文件夹名称 string fullpaths = "";//绝对路径 string reletivepaths = "";//相对路径 // 创建jesy服务器 client client = client.create(); // 获取文件名字 iterator<string> filenames = request.getfilenames(); list<string> filenamelist = new arraylist<string>(); list<string> relapathlist = new arraylist<string>(); list<string> realpathlist = new arraylist<string>(); try { while (filenames.hasnext()) {//判断多文件 // 把filenames集合中的值打出来 string filename = filenames.next(); // request.getfiles(filename)方法即通过filename这个key, 得到对应的文件集合列表. // 只是在这个map中, 文件被包装成multipartfile类型 list<multipartfile> filelist = request.getfiles(filename); if (filelist.size() > 0) { // 遍历文件列表 iterator<multipartfile> fileite = filelist.iterator(); while (fileite.hasnext()) { // 获得每一个文件 multipartfile multipartfile = fileite.next(); // 截取文件的后缀名(.jpg) string originalfilename = multipartfile.getoriginalfilename();//原始文件名 string substring = originalfilename.substring(originalfilename.indexof("."));//文件名后缀 //system.out.println("原始文件名:"+originalfilename+";文件后缀名:"+substring); // 将文件对象转换为字节 byte[] filebytes = multipartfile.getbytes(); // 生成唯一的一个字符串名称(带后缀) string newfilename = uuid.randomuuid().tostring()+substring; //system.out.println("唯一文件名(带后缀):"+newfilename); // 开始上传文件 // 拼接保存的路径(相对路径) reletivepaths = folder+newfilename; // 拼接最终保存的路径(绝对对路径) fullpaths = serveraddress+reletivepaths; //把文件关联到远程服务器 webresource webresource = client.resource(fullpaths); // 上传 webresource.put(string.class, filebytes); filenamelist.add(newfilename);//文件名 relapathlist.add(reletivepaths);//相对路径 realpathlist.add(fullpaths); //真实完整路径 } joson.put("success", 1); joson.put("error", ""); joson.put("filenamelist", filenamelist); joson.put("relapathlist", relapathlist); joson.put("realpathlist", realpathlist); } else { joson.put("success", 0); joson.put("error", "上传失败"); } } } catch (uniforminterfaceexception e) { // todo auto-generated catch block e.printstacktrace(); joson.put("success", 0); joson.put("error", "上传失败"); } catch (clienthandlerexception e) { // todo auto-generated catch block e.printstacktrace(); joson.put("success", 0); joson.put("error", "上传失败"); } catch (ioexception e) { // todo auto-generated catch block e.printstacktrace(); joson.put("success", 0); joson.put("error", "上传失败"); } return joson.tostring(); }
二、存储图片文件服务器:
1、tomcat的conf目录下的web.xml文件的大概100行添加如下几行(这要是不打开就会报错)
<servlet> <servlet-name>default</servlet-name> <servlet-class>org.apache.catalina.servlets.defaultservlet</servlet-class> <init-param> <param-name>debug</param-name> <param-value>0</param-value> </init-param> <!-- 上面是本来就有的 --> <!-- 允许文件读写 --> <init-param> <param-name>readonly</param-name> <param-value>false</param-value> </init-param> <!-- 下面也是本来有的 --> <init-param> <param-name>listings</param-name> <param-value>false</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet>
2、在该tomcat的/webapps/root目录下创建一个upload目录,用来存放上传的文件
3、启动tomcat静等着上传服务器那边的请求
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: 浅谈jsp九大内置对象及四个作用域