Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我需要保存一些图片,如何通过tearrayinputstream到FileInputStream来修复?_Java_Spring Mvc_Servlets - Fatal编程技术网

Java 我需要保存一些图片,如何通过tearrayinputstream到FileInputStream来修复?

Java 我需要保存一些图片,如何通过tearrayinputstream到FileInputStream来修复?,java,spring-mvc,servlets,Java,Spring Mvc,Servlets,请求标题: Accept:*/* Accept-Encoding:gzip, deflate Accept-Language:zh-CN,zh;q=0.8,en-US;q=0.6,en;q=0.4 Connection:keep-alive Content-Length:61425 Content-Type:multipart/form-data; boundary=----WebKitFormBoundarysqFOqeLTqOafwiDl Cookie:JSESSIONID=F98C35E6

请求标题:

Accept:*/*
Accept-Encoding:gzip, deflate
Accept-Language:zh-CN,zh;q=0.8,en-US;q=0.6,en;q=0.4
Connection:keep-alive
Content-Length:61425
Content-Type:multipart/form-data; boundary=----WebKitFormBoundarysqFOqeLTqOafwiDl
Cookie:JSESSIONID=F98C35E6649DC6997616A2CCB70A946A; save=F98C35E6649DC6997616A2CCB70A946A
Host:192.168.0.105:8080
Origin:http://192.168.0.105:8080
Referer:http://192.168.0.105:8080/list
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36
X-Requested-With:XMLHttpRequest
这是我的代码:

public boolean muilt(MultipartHttpServletRequest multiReq) throws IOException {
        Map<String, MultipartFile> map = multiReq.getFileMap();
        List<String> list = new ArrayList<>();
        for (String in : map.keySet()) {
            MultipartFile str = map.get(in);
            System.out.println(str.getSize());
            System.out.println(str.getOriginalFilename());
            if (str.getSize() != 0) {
                list.add(in + "," + url + in + ".jpg");
                FileOutputStream fos = new FileOutputStream(new File(url + in + ".jpg"));
                FileInputStream fs = (FileInputStream) str.getInputStream();
                byte[] buffer = new byte[1024];
                int len;
                while ((len = fs.read(buffer)) != -1) {
                    fos.write(buffer, 0, len);
                }
                fos.close();
                fs.close();
            }
        }
        if (list.size() < 7){
            return false;
        }
        for (int i = 0; i < 6; ++i){
            String[] sourceStrArray = list.get(i).split(",");
            this.split(sourceStrArray[0], sourceStrArray[1]);
        }
        return true;
    }
当它运行时,我发现问题:

java.lang.ClassCastException:java.io.ByteArrayInputStream不能为空 转换为java.io.FileInputStream tools.SplitPhoto.muiltSplitPhoto.java:87 at controller.HanderPhoto.photoHanderHanderPhoto.java:63 at sun.reflect.NativeMethodAccessorImpl.invoke0Native方法位于 sun.reflect.NativeMethodAccessorImpl.invokeNativeMethodAccessorImpl.java:62 在 sun.reflect.DelegatingMethodAccessorImpl.invokeDelegatingMethodAccessorImpl.java:43 java:498 at org.springframework.web.method.support.InvocableHandlerMethod.doInvokeInvocableHandlerMethod.java:205 在 org.springframework.web.method.support.InvocableHandlerMethod.InvokeForRequestInInvocableHandlerMethod.java:133 在 org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandleServletInvocableHandlerMethod.java:97 在 org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethodRequestMappingHandlerAdapter.java:827 在 org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternalRequestMappingHandlerAdapter.java:738 在 org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handleAbstractHandlerMethodAdapter.java:85 在 org.springframework.web.servlet.DispatcherServlet.doDispatcherservlet.java:963 在 org.springframework.web.servlet.DispatcherServlet.doServiceDispatcherServlet.java:897 在 org.springframework.web.servlet.FrameworkServlet.processRequestFrameworkServlet.java:970 在 org.springframework.web.servlet.FrameworkServlet.doPostFrameworkServlet.java:872 在javax.servlet.http.HttpServlet.serviceHttpServlet.java:648 at org.springframework.web.servlet.FrameworkServlet.serviceFrameworkServlet.java:846

源是一张图片,我想把它的流写入文件,我该怎么做?

MultipartFile的方法返回一个InputStream。您不必知道它返回什么类型的输入流。正如您所看到的,它不是FileInputStream,这不重要

您所需要做的就是从返回的InputStream中读取并写入文件。无论InputStream的具体类型是什么,您都可以以相同的方式读取InputStream。这就是多态性的意义所在

所以,只需删除无用的强制转换,并使用InputSTream而不是FileInputStream


请注意,您可以使用。

删除此强制转换,将InputStream的所有内容复制到一行代码中的文件中。您从任何InputStream读取数据的方式与从FileInputStream读取数据的方式相同。您不需要FileInputStream来保存数据。你的问题没有道理。
FileInputStream fs = (FileInputStream) str.getInputStream();