有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

spring将映像上载到服务器(Java)

我想从客户端接收图像并将其保存到文件夹中。当我从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) 个答案

  1. # 1 楼答案

    我找到了解决方案:

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

    <Context
       allowCasualMultipartParsing="true" /> 
    

    在服务器中。tomcat的xml

    然后将bean添加到WebConfig:

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

    试试这个代码。这对我很管用。用<;%%将代码放入jsp页面本身>;标签

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