Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.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)_Java_Spring_Image_Http_Upload - Fatal编程技术网

将图像上载到服务器(Java)

将图像上载到服务器(Java),java,spring,image,http,upload,Java,Spring,Image,Http,Upload,我想从客户端接收图像并将其保存到文件夹中。当我从POST-MAN接收到它时,它只生成字节: ˇÿˇ‡ JFIF H H ˇ· XExif MM * ái & † † † ± ˇÌ 8Photoshop 3.0 8BIM 8BIM % ‘ åŸè ≤ ÈÄ òϯB~ˇ¿ ± " ˇƒ 没关系,我可以接收并保存它 但当我尝试从IOS接收信息时,它也会在体内向我发送一些信息: --Boundary+71ADC8832D9A5F95 Content-Disposition: form-da

我想从客户端接收图像并将其保存到文件夹中。当我从
POST-MAN
接收到它时,它只生成字节:

ˇÿˇ‡ JFIF H H ˇ· XExif MM * ái & † † † ± ˇÌ 8Photoshop 3.0 8BIM 8BIM % ‘ åŸè ≤ ÈÄ òϯB~ˇ¿ ± " ˇƒ 
没关系,我可以接收并保存它

但当我尝试从IOS接收信息时,它也会在体内向我发送一些信息:

--Boundary+71ADC8832D9A5F95
Content-Disposition: form-data; name="file"; filename="fileName.jpg"
Content-Type: image/jpeg

ˇÿˇ‡ JFIF H H ˇ· XExif MM * ái & † † † ± ˇÌ 8Photoshop 3.0 8BIM 8BIM % ‘ åŸè ≤ ÈÄ òϯB~ˇ¿ ± " ˇƒ 
我怎样才能从中得到唯一的图像

我的Java代码是:

InputStream stream = request.getInputStream();
bytes = IOUtils.toByteArray(stream);
File file = new File("myfile/1.jpg");
BufferedImage img = ImageIO.read(new ByteArrayInputStream(bytes));
ImageIO.write(img, "JPEG", file);
更新:对于多部分上传图像,我添加了代码:

if(request instanceof MultipartHttpServletRequest){
    /**
     * multipart
     */
    MultipartHttpServletRequest mrequest = (MultipartHttpServletRequest) request;
    Iterator<String> itr =  mrequest.getFileNames();
    MultipartFile file = mrequest.getFile(itr.next());
    bytes = file.getBytes();
}
if(multipartTTPServletRequest的请求实例){
/**
*多部分
*/
MultipartTTpServletRequest mrequest=(MultipartTTpServletRequest)请求;
迭代器itr=mrequest.getFileName();
MultipartFile file=mrequest.getFile(itr.next());
字节=file.getBytes();
}

但它不是
multipathttpservletrequest
的实例。为什么?

我找到了解决办法:

spring和tomcat配置中的问题。。。。我补充说

<Context
   allowCasualMultipartParsing="true" /> 

试试这个代码。这对我很有效。将代码放入带有标记的jsp页面本身



我相信您的
元素缺少
enctype='multipart/form data'
<代码>需要这一点,我认为IOS会自动适应这一点,而您的其他浏览器则不会。你应该总是得到IOS发送的数据,你必须处理不同的数据格式。Spring(您标记的)支持处理文件上传格式,因此请查看Spring文档了解如何使用它。那么,如何接收此多部分/表单数据?是的,这是我的问题我更新了我的第一条评论,但简短的回答是:查看Spring文档了解如何处理文件上传。请参阅更新的主题您使用Spring MVC吗?通常使用SpringMVC,您不会直接处理请求对象。您可以指定所需的参数,Spring将为您映射这些参数。
@Bean
public MultipartResolver multipartResolver() {
    CommonsMultipartResolver resolver = new CommonsMultipartResolver();
    resolver.setDefaultEncoding("utf-8");
    return resolver;
}
<%
Connection conn=null;
   Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
    conn = DriverManager.getConnection(//your connection string//);

   PreparedStatement psImageInsertDatabase=null;
   PreparedStatement psImageInsertDatabase2=null;



   byte[] b=null;
   try{

      String temp=(String)session.getAttribute("myId");
      String sqlImageInsertDatabase="insert into upload_image (bImage) values (?)";
      String sqlImageInsertDatabase2="UPDATE [dbo].[upload_image] SET [iImageID] = '"+temp+"' WHERE [iImageID] is null AND [bImage] is not null";
      psImageInsertDatabase=conn.prepareStatement(sqlImageInsertDatabase);

      DiskFileItemFactory factory = new DiskFileItemFactory();

      ServletFileUpload sfu = new ServletFileUpload(factory);
      List items = sfu.parseRequest(request);

      Iterator iter = items.iterator();

      while (iter.hasNext()) {
         FileItem item = (FileItem) iter.next();
         if (!item.isFormField()) {
              b = item.get();
          }
      }

      psImageInsertDatabase.setBytes(1,b);
      psImageInsertDatabase.executeUpdate();

      psImageInsertDatabase2=conn.prepareStatement(sqlImageInsertDatabase2);
      psImageInsertDatabase2.executeUpdate();
   }
   catch(Exception e)
   {
     e.printStackTrace();
     response.sendRedirect("addimage.jsp");
   }

%>