千家信息网

SpringMVC跨服务器上传文件中出现405错误怎么办

发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,小编给大家分享一下SpringMVC跨服务器上传文件中出现405错误怎么办,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!S
千家信息网最后更新 2025年01月19日SpringMVC跨服务器上传文件中出现405错误怎么办

小编给大家分享一下SpringMVC跨服务器上传文件中出现405错误怎么办,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

SpringMVC跨服务器上传文件中出现405错误

下面是 应用服务器 的代码

package com.itheima.controller; import com.sun.jersey.api.client.Client;import com.sun.jersey.api.client.WebResource;import org.apache.commons.fileupload.FileItem;import org.apache.commons.fileupload.disk.DiskFileItemFactory;import org.apache.commons.fileupload.servlet.ServletFileUpload;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest;import java.io.File;import java.util.List;import java.util.UUID; @Controller@RequestMapping("/user")public class UserController {     @RequestMapping("/fileupload3")    public String fileupload3(MultipartFile upload) throws Exception{        System.out.println("跨服务器文件上传....");         //定义上传文件服务器的路径        String path = "http://localhost:9090/uploads/";        System.out.println(upload.getBytes());         //定义上传文件项        //获取上传文件的名称        String filename = upload.getOriginalFilename();        //把文件的名称设置成唯一值,uuid        String uuid = UUID.randomUUID().toString().replace("-","");        filename = uuid + "_" + filename;         //创建客户端对象        Client client = Client.create();         //和图片服务器进行连接        WebResource webResource = client.resource(path + filename);  //相当于创建一个连接对象         //上传文件按        webResource.put(upload.getBytes());         return "success";    }     /**     * SpringMVC文件上传     * @return     */    @RequestMapping("/fileupload2")    public String fileuoload2(HttpServletRequest request, MultipartFile upload) throws Exception {        System.out.println("springmvc文件上传...");         // 使用fileupload组件完成文件上传        // 上传的位置        String path = request.getSession().getServletContext().getRealPath("/uploads/");        // 判断,该路径是否存在        File file = new File(path);        if(!file.exists()){            // 创建该文件夹            file.mkdirs();        }         // 说明上传文件项        // 获取上传文件的名称        String filename = upload.getOriginalFilename();        // 把文件的名称设置唯一值,uuid        String uuid = UUID.randomUUID().toString().replace("-", "");        filename = uuid+"_"+filename;        // 完成文件上传        upload.transferTo(new File(path,filename));         return "success";    }     /**     * 文件上传     * @return     */    @RequestMapping("/fileupload1")    public String fileuoload1(HttpServletRequest request) throws Exception {        System.out.println("文件上传...");         // 使用fileupload组件完成文件上传        // 上传的位置        String path = request.getSession().getServletContext().getRealPath("/uploads/");        // 判断,该路径是否存在        File file = new File(path);        if(!file.exists()){            // 创建该文件夹            file.mkdirs();        }         // 解析request对象,获取上传文件项        DiskFileItemFactory factory = new DiskFileItemFactory();        ServletFileUpload upload = new ServletFileUpload(factory);        // 解析request        List items = upload.parseRequest(request);        // 遍历        for(FileItem item:items){            // 进行判断,当前item对象是否是上传文件项            if(item.isFormField()){                // 说明普通表单向            }else{                // 说明上传文件项                // 获取上传文件的名称                String filename = item.getName();                // 把文件的名称设置唯一值,uuid                String uuid = UUID.randomUUID().toString().replace("-", "");                filename = uuid+"_"+filename;                // 完成文件上传                item.write(new File(path,filename));                // 删除临时文件                item.delete();            }        }         return "success";    } }

springmvc.xml

                                                                                                       

success.jsp

<%--Created by IntelliJ IDEA.User: AdministratorDate: 2018/5/4Time: 21:58To change this template use File | Settings | File Templates.--%><%@ page contentType="text/html;charset=UTF-8" language="java" %>Title

上传文件成功

web.xml

    Archetype Created Web Application       dispatcherServlet    org.springframework.web.servlet.DispatcherServlet          contextConfigLocation      classpath:springmvc.xml        1        dispatcherServlet    /         default    org.apache.catalina.servlets.DefaultServlet          debug      0              listings      true        1           characterEncodingFilter    org.springframework.web.filter.CharacterEncodingFilter          encoding      UTF-8            characterEncodingFilter    /*  

index.jsp

<%--Created by IntelliJ IDEA.User: QHCDate: 2019/10/9Time: 13:49To change this template use File | Settings | File Templates.--%><%@ page contentType="text/html;charset=UTF-8" language="java" %>文件上传<%--不知道为啥,在台式机可以跑成功,在笔记本就报错,难道是tomcat的版本的原因?--%>

传统文件上传

选择文件:

SpringMVC文件上传

选择文件:

跨服务器上传文件

选择文件:
查看request.getSession().getServletContext().getRealPath("\uploads\")的值

如果遇到报错405,PUT http://localhost:9090/uploads/.........

只需要在文件服务器中的 web.xml 中加入下面的代码

        default        org.apache.catalina.servlets.DefaultServlet                    debug            0                            readonly            false                            listings            false                1    

重点来了~

idea中springmvc跨服务器上传文件报405错误,修改了web.xml一样报错

这个问题是因为你使用的文件服务器的Tomcat使用的是exploded模式部署,修改的Tomcat本地conf下的web.xml对exploded的项目没有生效,此时应该使用war包模式进行部署,本地修改的web.xml文件继续保持修改状态,并且修改Application context不为/,可以修改为:/+任意文件名

然后再重新部署一下Tomcat服务器,此时不再报错。(注意要修改一下代码中的文件上传路径)

以上是"SpringMVC跨服务器上传文件中出现405错误怎么办"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

0