返回顶部
首页 > 资讯 > 服务器 >SpringMVC跨服务器上传文件中出现405错误的解决
  • 200
分享到

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

2024-04-02 19:04:59 200人浏览 安东尼
摘要

目录springMVC跨服务器上传文件中出现405错误重点来了~springmvc跨服务器上传文件中出现405错误 下面是 应用服务器 的代码 package com.ithei

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服务器,此时不再报错。(注意要修改一下代码中的文件上传路径)

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

--结束END--

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

本文链接: https://lsjlt.com/news/137285.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • SpringMVC跨服务器上传文件中出现405错误的解决
    目录SpringMVC跨服务器上传文件中出现405错误重点来了~SpringMVC跨服务器上传文件中出现405错误 下面是 应用服务器 的代码 package com.ithei...
    99+
    2024-04-02
  • php出现文件上传失败错误怎么解决
    当出现文件上传失败错误时,可能是由于以下原因引起的:1. 上传文件大小超过了服务器设置的限制:在php.ini文件中,找到`uplo...
    99+
    2023-10-12
    php
  • DISCUZ 7.0文件上传过程中出现I/O错误!
    关键字描述:出现 错误 过程 上传 文件 目录 图片   问题 头像 如果你的论坛已经打上补丁,但上传头像是仍然出现出现I/O错误解决办法:在网站根目录新建一个 .htaccess 文件 内容:<If...
    99+
    2022-06-12
    出现 错误 过程 上传 文件 目录 图片 头像 问题 已经
  • SpringMVC文件上传中要解决的问题大汇总
    目录SpringMVC文件上传中要解决的问题一、中文文件名编码问题二、文件位置存储问题三、文件名冲突问题四、控制文件类型和大小 五、上传图片回显问题六、进度条问题七、单独准...
    99+
    2023-01-15
    SpringMVC文件上传问题 SpringMVC文件上传
  • 轻量应用服务器上传网页文件错误怎么解决
    检查访问权限:首先确保你具有相应的访问权限,可以使用命令行工具(例如PowerShell)来检查应用程序是否具有访问权限。确保你已正确配置了 WebDAV 文件,如果 WebDAV 文件不受支持,则无法上传。 检查缺少上传权限:如果没有正...
    99+
    2023-10-27
    错误 上传 服务器
  • 轻量应用服务器上传网页文件错误怎么解决啊
    文件大小限制:轻量应用服务器的文件大小通常受到限制,特别是对于大型文件和数据量比较大的文件。如果文件大小超过限制,服务器将无法支持该文件。 文件权限:如果您上传的文件有访问权限,服务器可能无法识别文件。因此,您需要检查文件权限并确保文件可...
    99+
    2023-10-28
    错误 上传 服务器
  • 传文件到亚马逊服务器错误怎么解决
    如果您在传输文件到亚马逊服务器时遇到错误,可能是由于以下原因之一: 文件大小超过限制:亚马逊服务器有文件大小限制,如果您的文件超过了这个限制,上传过程可能会失败。您可以尝试将文件分成较小的部分,然后分别上传。 网络连接问题:上传文件需要...
    99+
    2023-10-27
    亚马逊 错误 服务器
  • php中上传后文件出现乱码如何解决
    在进行PHP文件上传时,一些用户可能会遇到上传后文件出现乱码的问题。这是一个相对常见的问题,但是解决起来也比较简单。首先,我们需要了解一下上传文件中的编码问题。当我们在浏览器中选择要上传的文件时,浏览器会将文件名进行编码并以multipar...
    99+
    2023-05-14
  • 上网代理服务器出现403错误怎么解决
    上网代理服务器出现403错误解决的方法:1、输入cmd打开命令行,输入ipconfig /flushdns,同时查看是否有在网站虚拟目录中添加默认文档;2、输入命令chcon -R -t httpd_user_content_t publi...
    99+
    2024-04-02
  • 亚马逊服务器文件上传错误怎么回事啊怎么解决
    检查文件是否存在:如果您已经将文件上传到服务器上,请检查文件是否存在,并确保您正在上传文件的URL与文件上传时的URL一致。 检查上传设置:如果您上传了文件,请检查文件上传的URL是否正确,并确保您正在上传文件的大小和格式符合要求。 检查...
    99+
    2023-10-27
    亚马逊 怎么回事 文件上传
  • 网站上传云服务器错误如何解决
    要解决网站上传云服务器错误,可以尝试以下几种方法:1. 检查网络连接:确保云服务器的网络连接正常,可以通过ping命令或者其他网络测...
    99+
    2023-09-26
    云服务器
  • 轻量应用服务器上传网页文件错误
    首先,要确认轻量应用服务器是否支持文件上传。如果支持文件上传,服务器应该能够自动将上传的文件存储到本地服务器上的指定文件夹中。如果服务器不支持文件上传,那么您需要查看相关的配置文件或使用其他上传工具。 其次,要检查服务器的网络连接是否正常...
    99+
    2023-10-28
    错误 上传 服务器
  • 轻量应用服务器上传网页文件错误怎么解决啊苹果
    首先,可以检查服务器的网络连接是否正常。可以尝试在不同的网络环境下进行连接,如果有其他设备或应用程序占用了网络连接,则可能是由于该设备或应用程序出现问题。如果服务器的网络连接正常,可以尝试更改应用程序的文件格式。例如,如果要将网页上传到轻量...
    99+
    2023-10-27
    错误 苹果 上传
  • 亚马逊服务器内网传输文件错误的解决方法
    1. 检查网络连接和配置 首先,确保您的网络连接正常并且配置正确。检查您的服务器和客户端之间的网络连接是否稳定,并确保它们都连接到同一个内部网络。确保您的服务器和客户端的网络配置正确,包括IP地址、子网掩码和网关设置。 2. 检查防火墙设...
    99+
    2023-10-27
    亚马逊 解决方法 内网
  • 解决feign微服务间的文件上传报错问题
    A微服务调用B服务的上传文件接口报错: the request was rejected because no multipart boundary was found spri...
    99+
    2024-04-02
  • 在python中写入文件时出现错误如何解决
    在python中写入文件时出现错误如何解决?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Python主要用来做什么Python主要应用于:1、Web开发;2、数...
    99+
    2023-06-14
  • 使用上网代理服务器出现403错误怎么解决
    使用上网代理服务器出现403错误解决的方法:1、输入cmd打开命令行,输入ipconfig /flushdns,同时查看是否有在网站虚拟目录中添加默认文档;2、输入命令chcon -R -t httpd_user_content_t pub...
    99+
    2024-04-02
  • 云服务器出现502错误怎么解决
    本篇内容介绍了“云服务器出现502错误怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!出现502错误的原因分析将请求提交给网关,如ph...
    99+
    2023-06-03
  • 亚马逊服务器文件上传错误怎么回事啊
    1. 了解亚马逊服务器文件上传错误 亚马逊服务器是一种云计算服务,可以让用户在互联网上租用虚拟计算资源。在使用亚马逊服务器时,有时会遇到文件上传错误的问题。这种错误可能是由多种原因引起的,例如网络连接问题、文件大小限制、权限问题等。 2....
    99+
    2023-10-27
    亚马逊 怎么回事 文件上传
  • 如何解决php ueditor上传图片出现未知错误的问题
    本文操作环境:Windows7系统、PHP7.1、Dell G3电脑。如何解决php ueditor上传图片出现未知错误的问题?php部署ueditor上传图片返回未知错误(error 6)主要是因为php.ini 中的 upload_tm...
    99+
    2015-05-21
    php ueditor
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作