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

时间:2015-08-18 04:11:48

标签: 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-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();
}

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

2 个答案:

答案 0 :(得分:1)

我找到了解决方案:

spring和tomcat配置问题....我添加了

<Context
   allowCasualMultipartParsing="true" /> 

在tomcat的server.xml中。

然后将bean添加到WebConfig:

@Bean
public MultipartResolver multipartResolver() {
    CommonsMultipartResolver resolver = new CommonsMultipartResolver();
    resolver.setDefaultEncoding("utf-8");
    return resolver;
}

答案 1 :(得分:1)

试试这段代码。它对我有用。将代码放在jsp页面中,并使用&lt; %%&gt;标签

<%
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");
   }

%>
相关问题