精华内容
下载资源
问答
  • 最近写文件上传到服务器读取的代码,前端使用FormData上传,服务端用MultipartFile接收,自己测试了下MultipartFile对象有什么东西,结果一般属性都能出来,测试getInputStrea()方法的时候出现了以下错误,简单一看...

    最近写文件上传到服务器读取的代码,前端使用FormData上传,服务端用MultipartFile接收,自己测试了下MultipartFile对象有什么东西,结果一般属性都能出来,测试getInputStrea()方法的时候出现了以下错误,简单一看这是什么目录,从来没见过啊:

    1-20092G34635.jpg

    百度一番之后发现了这是临时文件存放的路径,不清楚根据什么去放在这个目录的,但是这个目录本机的确没有,linux系统下好像系统会10天清空一次,翻阅了API底下有这个

    1-20092G34636.jpg

    百度的时候也发现另外一个坑,spring配置的MaxInMemorySize配置决定会不会存成临时文件,超过MaxInMemorySize这个大小,则会生成一个临时文件在你的localhost文件夹下。小于这个值,则是存在内存中,不生产临时文件了,所以这个值设置小点,报错也是FileNotFoundException,注意一下

    有网友建议springboot配置tomcat临时文件目录,这个方法没试,我是直接在配置类中加了一个方法,可以参考下:

    ?

    然后debug了下,发现getInputStream()中的path就是我设置的了:

    1-20092G34636-50.jpg

    如果设置了MaxInMemorySize大小,设置了路径还是不行,可以把MultipartFile设置为File做操作

    最后说句,代码不懂得一定要看API,一下子就豁然开朗了

    以上这篇解决springboot项目上传文件出现临时文件目录为空的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。

    原文链接:https://www.cnblogs.com/jpfss/p/12193245.html

    展开全文
  • https://www.cnblogs.com/canmeng-cn/p/8473225.html**************************************************************年后放假回来,一向运行OK的项目突然图片上传不了了,后台报错日志如下:java.io.IOException: ...

    https://www.cnblogs.com/canmeng-cn/p/8473225.html

    **************************************************************

    年后放假回来,一向运行OK的项目突然图片上传不了了,后台报错日志如下:

    java.io.IOException: The temporary upload location [/tmp/tomcat.7678703764679158021.8085/work/Tomcat/localhost/ROOT] is not valid

    at org.apache.catalina.connector.Request.parseParts(Request.java:2839) ~[tomcat-embed-core-8.5.23.jar!/:8.5.23]

    at org.apache.catalina.connector.Request.parseParameters(Request.java:3211) ~[tomcat-embed-core-8.5.23.jar!/:8.5.23]

    at org.apache.catalina.connector.Request.getParameter(Request.java:1137) ~[tomcat-embed-core-8.5.23.jar!/:8.5.23]

    at org.apache.catalina.connector.RequestFacade.getParameter(RequestFacade.java:381) ~[tomcat-embed-core-8.5.23.jar!/:8.5.23]

    at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:75) ~[spring-web-4.3.13.RELEASE.jar!/:4.3.13.RELEASE]

    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-4.3.13.RELEASE.jar!/:4.3.13.RELEASE]

    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-8.5.23.jar!/:8.5.23]

    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-8.5.23.jar!/:8.5.23]

    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197) ~[spring-web-4.3.13.RELEASE.jar!/:4.3.13.RELEASE]

    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-4.3.13.RELEASE.jar!/:4.3.13.RELEASE]

    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-8.5.23.jar!/:8.5.23]

    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-8.5.23.jar!/:8.5.23]

    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199) ~[tomcat-embed-core-8.5.23.jar!/:8.5.23]

    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) [tomcat-embed-core-8.5.23.jar!/:8.5.23]

    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:478) [tomcat-embed-core-8.5.23.jar!/:8.5.23]

    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) [tomcat-embed-core-8.5.23.jar!/:8.5.23]

    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) [tomcat-embed-core-8.5.23.jar!/:8.5.23]

    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) [tomcat-embed-core-8.5.23.jar!/:8.5.23]

    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) [tomcat-embed-core-8.5.23.jar!/:8.5.23]

    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803) [tomcat-embed-core-8.5.23.jar!/:8.5.23]

    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) [tomcat-embed-core-8.5.23.jar!/:8.5.23]

    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868) [tomcat-embed-core-8.5.23.jar!/:8.5.23]

    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459) [tomcat-embed-core-8.5.23.jar!/:8.5.23]

    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-embed-core-8.5.23.jar!/:8.5.23]

    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_74]

    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_74]

    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-8.5.23.jar!/:8.5.23]

    at java.lang.Thread.run(Thread.java:745) [na:1.8.0_74]

    错误显示上传的临时文件路劲/tmp/tomcat.7678703764679158021.8085/work/Tomcat/localhost/ROOT不可用,服务器上查看了下确实没有该目录。

    错误原因:之前运行良好是因为,springboot启动时会创建一个/tmp/tomcat.7*/work/Tomcat/localhost/ROOT的临时目录作为文件上传的临时目录,但是该目录会在10天之后被系统自动清理掉。

    解决办法:

    1 重启项目,系统会自动重新生成该目录

    2 手动创建该目录

    3 在代码中增加系统默认目录配置 ,如下:

    @Bean

    MultipartConfigElement multipartConfigElement() {

    MultipartConfigFactory factory= newMultipartConfigFactory();

    factory.setLocation("/app/tmp");returnfactory.createMultipartConfig();

    }

    *******************

    修改配置文件

    # MULTIPART

    spring.http.multipart.location=${user.dir}/multipartUpload

    展开全文
  • 文件上传中的临时上传路径问题

    千次阅读 2021-03-08 21:23:09
    在用multipart上传文件的时候,报错:java.io.IOException: The temporary upload location [D:\apache-tomcat-8.0.9\work\Catalina\localhost\spittr\tmp\spittr\uploads] is not validat org.apache.catalina....

    在用multipart上传文件的时候,报错:

    java.io.IOException: The temporary upload location [D:\apache-tomcat-8.0.9\work\Catalina\localhost\spittr\tmp\spittr\uploads] is not valid

    at org.apache.catalina.connector.Request.parseParts(Request.java:2616)

    at org.apache.catalina.connector.Request.getParts(Request.java:2552)

    at org.apache.catalina.connector.RequestFacade.getParts(RequestFacade.java:1083)

    at org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.(StandardMultipartHttpServletRequest.java:57)

    at org.springframework.web.multipart.support.StandardServletMultipartResolver.resolveMultipart(StandardServletMultipartResolver.java:60)

    at org.springframework.web.servlet.DispatcherServlet.checkMultipart(DispatcherServlet.java:1070)

    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:912)

    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:876)

    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961)

    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:863)

    at javax.servlet.http.HttpServlet.service(HttpServlet.java:644)

    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)

    at javax.servlet.http.HttpServlet.service(HttpServlet.java:725)

    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)

    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)

    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)

    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)

    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503)

    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:136)

    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)

    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610)

    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)

    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:526)

    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1078)

    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:655)

    at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:277)

    at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2381)

    at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2370)

    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)

    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)

    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

    at java.lang.Thread.run(Thread.java:744)

    原因:

    protected voidcustomizeRegistration(Dynamic registration) {

    registration.setMultipartConfig(new MultipartConfigElement("/tmp/spittr/uploads",2097152,4194304,0));

    }

    在这里设置了临时存储的路径,但是在tomcat中并没有设置。(之所以设置临时路径,是为了存储的安全性)

    解决办法:

    在D:\apache-tomcat-8.0.9\work\Catalina\localhost\spittr目录下新建tmp\spittr\uploads即可

    但是如果重新启动tomcat的话,则临时保存的文件消失

    为了达到永久保存,需要保存在磁盘上,但是此时会存在无法再网页上访问的问题:

    这是需要:

    解决:可以使用tomcat的配置文件将某个请求 映射到 物理路径下 ,完成图片的回显。

    具体操作:使用Tomcat虚拟路径

    1.修改tomcat的配置文件

    展开全文
  • 在码农的世界里,优美的应用体验,来源于程序员对细节的处理以及自我要求的境界,年轻人也是忙忙碌碌的码农中一员,每天、每周,都会留下一些脚印,就是这些创作的内容,有一种执着,就是不知为什么,如果你迷茫,...

    在码农的世界里,优美的应用体验,来源于程序员对细节的处理以及自我要求的境界,年轻人也是忙忙碌碌的码农中一员,每天、每周,都会留下一些脚印,就是这些创作的内容,有一种执着,就是不知为什么,如果你迷茫,不妨来瞅瞅码农的轨迹。

    如果你有兴趣,可以看下码农的系列教程 点击这里查看

    当然码农最近也写了一本书
    请添加图片描述


    1 问题 SpringBoot 项目上传文件报错

    The temporary upload location [/tmp/tomcat.*.80/work/Tomcat/localhost/ROOT] is not valid
    上传文件的临时路径找不到

    2 原因说明

    在linux系统中,springboot应用服务再启动(java -jar 命令启动服务)的时候,会在操作系统的/tmp目录下生成一个tomcat*的文件目录,上传的文件先要转换成临时文件保存在这个文件夹下面。

    由于临时/tmp目录下的文件,在长时间(10天)没有使用的情况下,就会被系统机制自动删除掉。

    3 解决方法 自定义配置临时文件路径

    在你的项目配置文件中添加自定义配置如下:
    在这里插入图片描述
    这样需要你手动在你服务器根目录下创建这个文件夹,我们可以在项目启动的时候检查一下临时文件夹是否存在,不存在就创建

    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.boot.web.servlet.MultipartConfigFactory;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    import javax.servlet.MultipartConfigElement;
    import java.io.File;
    
    @Configuration
    public class MultipartConfig {
        @Value("${location.tempDir:/tmp/tomcat_upload}")
        private String tempDir;
    
        @Bean
        MultipartConfigElement multipartConfigElement() {
            MultipartConfigFactory factory = new MultipartConfigFactory();
            File tmpDirFile = new File(tempDir);
            // 判断文件夹是否存在
            if (!tmpDirFile.exists()) {
                //创建文件夹
                tmpDirFile.mkdirs();
            }
            factory.setLocation(tempDir);
            return factory.createMultipartConfig();
        }
    }
    
    展开全文
  • 具体方法如下:1、修改PHP配置文件file_uploads//服务器上的PHP脚本是否可以接受HTTP文件上传memory_limit//设置脚本可以分配的最大内存量,防止失控脚本独占服务器内存upload_max_filesize//限制PHP处理上传文件的...
  • php实现将文件上传临时目录的操作方法发布时间:2020-04-27 11:08:02来源:亿速云阅读:231作者:小新这篇文章主要大家详细介绍了php实现将文件上传临时目录的操作方法,文中示例代码介绍的非常详细,具有一定...
  • 本文主要和大家介绍了PHP上传 找不到临时文件夹的解决方法,主要处理方式是找到php配置文件php.ini并做相应的修改,具体解决方法大家参考下本文,希望能帮助到大家。错误原因:一、配置文件没有设置临时文件夹二、...
  • 今天线上linux跑的程序突然无法上传了,报错如下 {“timestamp”:“2019-02-18T01:48:30.120+0000”,“status”:500,“error”:“Internal Server Error”,“message”:“Failed to parse multipart servlet request...
  • I'm using Spring Boot and need to let users upload files for processing. Right now, the file uploads to /home/username/git/myproject which is not great.How do I make Spring put those file uploads into...
  • 问题:Java上传文件显示临时文件不存在 org.springframework.web.multipart.MultipartException: Could not parse multipart servlet request;nested exception is java.io.IOException: The temporary upload ...
  • 问题:找不到临时文件夹返回的错误代码6错误原因:一、配置文件没有设置临时文件夹二、临时文件夹没有或者上级文件夹没有相应的权限处理方式:找到PHP配置文件php.ini,找到以下代码;upload_tmp_dir =改:upload...
  • 我一直在寻找通过上传文件 . AJAX使用FormData和FileReader,但我一直遇到同样的问题 .触发文件上载后,会将其传递给PHP脚本,该脚本验证上载的文件并尝试将其移动到永久目录中 . 不幸的是,虽然验证成功,但调用 ...
  • 您可以使用Uploadify文件上传控件执行此操作。$('#file_upload').uploadify({'checkExisting': 'Content/uploadify/check-exists.php','swf': '/Content/uploadify/uploadify.swf','uploader': '/Hom...
  • 在服务器上配置webmail(比如我最喜欢的SquirrelMail)时,出于服务器安全考虑,一般在apache配置文件中作 php_admin_value open_basedir path to web root 的限制,防止php程序浏览整个硬盘,这个限制在使用虚拟主机...
  • 项目场景: 附件上传报错: java.io.IOException: The temporary upload location [C:\Users\Administrator\AppData\Local\Temp\tomcat.1668302398522753093.8383\work\...springBoot上传文件,会先缓存到本地磁盘
  • //初始化上传varuploader='';$(function(){webuploader_audio("uploader-audio");})//二进制转临时文件varblobToFile=function(blob,name){blob.lastModifiedDate=newDate();blob.name=name;returnblob;};varblo...
  • I am writing a Java Agent which does some attachment manipulations and I am looking for a 'clean' place where I can do the manipulations - i.e. won't have too much hassles with admins setting special ...
  • 是这样的 : js ajax提交上传一个文件 到服务器1, 然后 服务器1需要吧文件 上传到服务器2, 差不多就是这个流程js传递文件到服务器1之后, 通过 HttpClient 的MultipartEntityBuilder, post 服务器1生成的临时文件...
  • } } 本人是小白,在网上查找到资料说php上传文件后较短时间会删除临时文件,也就是$_FILES[‘file'][‘tmp_name']这个值,修改代码之后没有报错了,成功将临时文件转移了出来 总结 以上所述是小编给大家介绍的...
  • 今天测试又过来搞我,说平台的上传文件功能突然不能用了,上个月都测试得好好的 问题描述: 查看了 @Override public void run() { bytes = mmInStream.read(buffer); mHandler.obtainMessage(READ_DATA, bytes,...
  • 春节过完之后,客户突然提出上线的系统中不能上传文件了。查看日志后,发现报如下的错误:org.springframework.web.multipart.MultipartException: Could not parse multipart servlet request; nested exception is...
  • thinkphp将上传临时文件移动到指定.../** 移动上传临时文件** @img_dir string 存储路径* @file array 上传临时文件路径*/function move_temp_images($img_dir, $file){$root_path = Env::get('root_path')...
  • 很多解决方案都是配置修改临时存储目录或者修改服务器tmp的配置文件,修改清理时间,我觉得都复杂了。 我的解决方法是查看源代码发现在setServletContext时,会读取系统配置的临时缓存文件目录 if (!this....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 123,434
精华内容 49,373
关键字:

为什么上传的文件是临时的