长春网站建设58同城,wordpress英文模板下载地址,网站商城建设合同免费下载,广告设计公司专业vi设计公司前言
在服务器上#xff0c;当我们启动了tomcat#xff0c;就可以以 http://ip地址:8080/文件路径/文件名 的方式#xff0c;进行访问到我们服务器上处于tomcat的webapps文件夹下的文件
于是为了可以往上面加文件#xff0c;我们有两种方式#xff0c;一种就是直接复制文…前言
在服务器上当我们启动了tomcat就可以以 http://ip地址:8080/文件路径/文件名 的方式进行访问到我们服务器上处于tomcat的webapps文件夹下的文件
于是为了可以往上面加文件我们有两种方式一种就是直接复制文件到路径上另一种自然是通过代码的方式调用接口往上面上传文件
准备工作
首先你得安装tomcat
安装完成后后启动
然后需要注意的是为了让我们能够访问文件那么我们需要做这么一件事开放服务器的安全策略 把端口8080放开 为了能够成功上传文件需要放开tomcat的写权限 即解决报错returned a response status of 405 Method Not Allowed 在tomcat的conf文件夹找到web.xml文件添加如下代码
!-- 使得服务器允许文件写入。--init-paramparam-namereadonly/param-nameparam-valuefalse/param-value/init-param
注意该代码需要在servlet标签内部添加即: servletservlet-namedefault/servlet-nameservlet-classorg.apache.catalina.servlets.DefaultServlet/servlet-classinit-paramparam-namedebug/param-nameparam-value0/param-value/init-paraminit-paramparam-namelistings/param-nameparam-valuefalse/param-value/init-param!-- 使得服务器允许文件写入。--init-paramparam-namereadonly/param-nameparam-valuefalse/param-value/init-paramload-on-startup1/load-on-startup/servlet加完代码记得重启tomcat 上传文件代码
在pom.xml文件加入代码: !-- 跨域上传依赖--dependencygroupIdcom.sun.jersey/groupIdartifactIdjersey-core/artifactIdversion1.18.1/version/dependencydependencygroupIdcom.sun.jersey/groupIdartifactIdjersey-client/artifactIdversion1.18.1/version/dependencyPostMapping(/upLoadImg)ResponseBodypublic String upLoadImg(MultipartFile myfile){String path http://服务器公网ip:8080/tomcat的webapps下的文件夹名称/;//为上传到服务器的文件取名使用UUID防止文件名重复String type myfile.getOriginalFilename().substring(myfile.getOriginalFilename().lastIndexOf(.));String filename UUID.randomUUID().toString()type;try{
//使用Jersey客户端上传文件Client client Client.create();WebResource webResource client.resource(path / URLEncoder.encode(filename,utf-8));webResource.put(myfile.getBytes());System.out.println(上传成功);System.out.println(图片路径》pathfilename);}catch(Exception ex){System.out.println(上传失败);}return 上传成功;}
以上会随机生成uuid作为文件名 如果想保留原本文件名称参考如下代码 有一个需要注意的是:如果以原文件名命名进行上传文件名不能包含中文 否则会报错400 PostMapping(/upLoadImg)ResponseBodypublic String doRemoteUpload(RequestParam(file)MultipartFile file){String path http://服务器公网ip:8080/tomcat的webapps下的文件夹名称/;String filename file.getOriginalFilename();try{Client client Client.create();WebResource webResource client.resource(path / filename);webResource.put(file.getBytes());}catch(Exception ex){return 上传文件失败:path/filename;}return 上传文件成功:path/filename;}导入的import为:
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.WebResource;删除服务器文件 GetMapping(/deleteUploadImg)ResponseBodypublic ResultVO deleteUploadImg(){String path http://服务器公网ip:8080/tomcat的webapps下的文件夹名称/文件名;try{Client client Client.create();WebResource webResource client.resource(path);webResource.delete();}catch(Exception ex){return 删除文件失败:path/filename ex.getMessage();}return 删除文件成功:path/filename;}如果需要 删除文件 只需要把文件的路径传入 并且使用WebResource的delete方法即可 结语
以上就是直接通过tomcat跨域上传文件到服务器的方式