我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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";
    }
 
    
    @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";
    }
 
    
    @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<FileItem> 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


<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">
 
    <!-- 开启注解扫描 -->
    <context:component-scan base-package="com.itheima"/>
 
    <!-- 视图解析器对象 -->
    <bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/pages/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
 
    <!--前端控制器,哪些静态资源不拦截-->
    <mvc:resources location="/css/" mapping="/css/**"/>
    <mvc:resources location="/images/" mapping="/images/**"/>
    <mvc:resources location="/js/" mapping="/js/**"/>
 
    <!--前端控制器,哪些静态资源不拦截-->
    <mvc:resources location="/css/" mapping="/css/**"/>
    <mvc:resources location="/images/" mapping="/images/**"/>
    <mvc:resources location="/js/" mapping="/js/**"/>
 
    <!--配置文件解析器对象-->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="maxUploadSize" value="10485760" />
    </bean>
 
    <!-- 开启SpringMVC框架注解的支持 -->
    <mvc:annotation-driven />
 
</beans>

success.jsp


<%--
Created by IntelliJ IDEA.
User: Administrator
Date: 2018/5/4
Time: 21:58
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h3>上传文件成功</h3>
</body>
</html>

web.xml


<?xml version="1.0" encoding="UTF-8"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at
      http://www.apache.org/licenses/LICENSE-2.0
  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->
 
<!--
  - This is the Cocoon web-app configurations file
  -
  - $Id$
  -->
<!--suppress ALL -->
<web-app version="2.4"
         xmlns="http://java.sun.com/xml/ns/j2ee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
 
  <display-name>Archetype Created Web Application</display-name>
 
  <servlet>
    <servlet-name>dispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:springmvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>dispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
 
  <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>listings</param-name>
      <param-value>true</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
 
  <!--配置解决中文乱码的过滤器-->
  <filter>
    <filter-name>characterEncodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>characterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
</web-app>

index.jsp


<%--
Created by IntelliJ IDEA.
User: QHC
Date: 2019/10/9
Time: 13:49
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>文件上传</title>
</head>
<body>
<%--不知道为啥,在台式机可以跑成功,在笔记本就报错,难道是tomcat的版本的原因?--%>
<h3>传统文件上传</h3>
<form action="/user/fileupload1" method="post" enctype="multipart/form-data">
选择文件:<input type="file" name="upload"/><br>
<input type="submit" value="上传"/>
</form>
<h3>SpringMVC文件上传</h3>
<form action="/user/fileupload2" method="post" enctype="multipart/form-data">
选择文件:<input type="file" name="upload"/><br>
<input type="submit" value="上传"/>
</form>
<h3>跨服务器上传文件</h3>
<form action="/user/fileupload3" method="post" enctype="multipart/form-data">
选择文件:<input type="file" name="upload" /><br/>
<input type="submit" value="上传" />
</form>
<a href="/user/testGetRealPath" rel="external nofollow" >查看request.getSession().getServletContext().getRealPath("\uploads\")的值</a>
</body>
</html>

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

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


<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>

重点来了~

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

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

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

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

php出现文件上传失败错误怎么解决

当出现文件上传失败错误时,可能是由于以下原因引起的:1. 上传文件大小超过了服务器设置的限制:在php.ini文件中,找到`upload_max_filesize`和`post_max_size`两个配置项,将其值适当增大。2. 临时文件夹
2023-10-12

轻量应用服务器上传网页文件错误怎么解决

检查访问权限:首先确保你具有相应的访问权限,可以使用命令行工具(例如PowerShell)来检查应用程序是否具有访问权限。确保你已正确配置了WebDAV文件,如果WebDAV文件不受支持,则无法上传。检查缺少上传权限:如果没有正确的上传权限,则无法上传文件。确保你已正确配置了WebDAV文件,如果WebDAV文件不受支持,则无法上传。检查文件格式:检查文件的格式是否支持所需的服务器端和客户端协议。如果文件格式不支持...
2023-10-27

轻量应用服务器上传网页文件错误怎么解决啊

文件大小限制:轻量应用服务器的文件大小通常受到限制,特别是对于大型文件和数据量比较大的文件。如果文件大小超过限制,服务器将无法支持该文件。文件权限:如果您上传的文件有访问权限,服务器可能无法识别文件。因此,您需要检查文件权限并确保文件可以被正确地读取和写入。文件损坏:如果您上传的文件有损坏或丢失,服务器可能无法支持文件
轻量应用服务器上传网页文件错误怎么解决啊
2023-10-28

传文件到亚马逊服务器错误怎么解决

如果您在传输文件到亚马逊服务器时遇到错误,可能是由于以下原因之一:文件大小超过限制:亚马逊服务器有文件大小限制,如果您的文件超过了这个限制,上传过程可能会失败。您可以尝试将文件分成较小的部分,然后分别上传。网络连接问题:上传文件需要稳定的网络连接。如果您的网络连接不稳定,上传过程可能会中断。您可以尝试重新启动您的网络设备或更改网络连接。服务器问题:亚马逊服务器可能会出现问题,导致上传失败。您可以尝...
2023-10-27

亚马逊服务器文件上传错误怎么回事啊怎么解决

检查文件是否存在:如果您已经将文件上传到服务器上,请检查文件是否存在,并确保您正在上传文件的URL与文件上传时的URL一致。检查上传设置:如果您上传了文件,请检查文件上传的URL是否正确,并确保您正在上传文件的大小和格式符合要求。检查网络连接:如果您上传了文件,请检查您的网络连接是否正常,并确保您正在上传文件的服务器和客户端之间的网络连接正常。如果您已经检查了以上几个方面,但仍然无法解决问题,您可...
2023-10-27

亚马逊服务器内网传输文件错误的解决方法

1.检查网络连接和配置首先,确保您的网络连接正常并且配置正确。检查您的服务器和客户端之间的网络连接是否稳定,并确保它们都连接到同一个内部网络。确保您的服务器和客户端的网络配置正确,包括IP地址、子网掩码和网关设置。2.检查防火墙设置如果您的服务器和客户端之间使用了防火墙,那么请检查防火墙设置是否允许内网传输文件。确保防火墙允许传输所需的端口和协议。您可以查阅亚马逊服务器文档或咨询亚马逊技术支持以获取更...
2023-10-27

轻量应用服务器上传网页文件错误怎么解决啊苹果

首先,可以检查服务器的网络连接是否正常。可以尝试在不同的网络环境下进行连接,如果有其他设备或应用程序占用了网络连接,则可能是由于该设备或应用程序出现问题。如果服务器的网络连接正常,可以尝试更改应用程序的文件格式。例如,如果要将网页上传到轻量应用服务器,可以尝试将文件格式从jpg改为png,或者将文件名从txt改为htm
2023-10-27

阿里云服务器出现错误的解决方法

本文将介绍阿里云服务器出现错误时的一些常见问题和解决方法。无论是在购买、配置还是使用过程中,都可能会遇到各种故障和错误,下面将针对这些常见问题提供解决方案。解决方法:1.登录问题有时候,当你尝试登录到阿里云服务器时,可能会遇到以下错误信息:```Permissiondenied(publickey)```这个问题通常是
阿里云服务器出现错误的解决方法
2024-01-17

轻量应用服务器上传网页文件错误怎么回事啊怎么解决

首先,可以先检查服务器或应用程序是否有错误,可以查看日志文件来确定错误原因。如果没有错误,那么可以尝试重新上传文件。在上传之前,可以先对文件进行检查,确保文件内容完整无误,避免文件内容出现错误。其次,可以尝试使用一些工具来检查上传的文件是否有错误。例如,可以使用一些上传工具来检查文件是否存在错误,例如文件检查工具,文件
2023-10-27

springboot+jersey+tomcat实现跨域方式上传文件到服务器的方式

这篇文章主要介绍了springboot+jersey+tomcat实现跨域方式上传文件到服务器,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
2023-03-09

如何解决feign微服务间的文件上传报错问题

本篇内容介绍了“如何解决feign微服务间的文件上传报错问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!A微服务调用B服务的上传文件接口报
2023-06-20

亚马逊服务器文件上传不了的解决方法

1.检查网络连接和服务器状态首先,确保你的网络连接正常并且亚马逊服务器处于正常运行状态。你可以尝试访问其他网站或应用程序来确认你的网络连接是否正常。如果其他网站或应用程序也无法正常访问,那么问题可能是你的网络连接出了问题,你可以尝试重新启动你的路由器或联系你的网络服务提供商。2.检查文件大小和格式限制亚马逊服务器可能有文件大小和格式的限制。确保你要上传的文件大小没有超过服务器的限制。此外,还要检查文件...
2023-10-27

如何解决阿里云服务器上传文件慢的问?

在使用阿里云服务器时,有时候会遇到上传文件速度过慢的问题。这可能是由于网络带宽不足、服务器配置不合理或者网络环境不稳定等原因导致的。本文将介绍一些解决阿里云服务器上传文件慢问题的方法。详细说明:1.检查网络带宽首先,我们需要检查服务器的网络带宽是否足够。如果带宽不足,上传文件的速度就会变慢。可以通过登录到阿里云控
如何解决阿里云服务器上传文件慢的问?
2024-01-14

编程热搜

目录