【问题标题】:base64 to image filebase64转图片文件
【发布时间】:2014-01-10 09:20:07
【问题描述】:

我正在使用 Summernote 并希望异步服务器上传功能。我打算将图像转换为base64并通过ajax发送到servlet,我将保存压缩文件并将图像文件的url返回到编辑器src,如下所示:

var edit = function() {
  $('.click2edit').summernote({
      focus: true,
      onImageUpload: function(files, editor, welEditable) {
            sendFile(files[0],editor,welEditable);
        }
      });
};
function sendFile(file,editor,welEditable) {

    alert(file.size);
    var reader = new FileReader();
    var imgfile = reader.readAsBinaryString(file);
    alert(file);
    $.ajax({
            method:"POST",
            url: 'imageupload',
            data: {imageFile:imgfile},
            success:function(response)
            {
                alert("file uploaded successfully");
                return response;
                },
            error: function(response,status,err)
            {
                alert("upload failed"); 
            }
        });
}

下面是我的 servlet 代码。在这里,我将文件设为空。我相信我应该在这里获取文件作为字符串。有人可以帮忙解释一下吗?

 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("image upload");
        String file = (String)request.getParameter("imageFile");
        System.out.println("file: " + file);
        PrintWriter out = response.getWriter();
        response.setContentType("text/html");
        out.print(file);


    }

【问题讨论】:

    标签: java jquery html filereader


    【解决方案1】:

    我终于找到了这个问题的答案。 我不得不修改summernote并将文件输入包装在表单中,并从那里返回我使用iframe发布的表单。

    我用谷歌搜索,发现出于安全原因,我们无法将文件名动态设置为文件输入。

    【讨论】:

      【解决方案2】:

      你能试试request.getReader()吗?

      【讨论】:

        【解决方案3】:

        试试这个

        public static BufferedImage decodeToImage(String imageString)
        {
            BufferedImage image = null;
            byte[] imageByte;
            try
            {
                BASE64Decoder decoder = new BASE64Decoder();
                imageByte = decoder.decodeBuffer(imageString);
                ByteArrayInputStream bis = new ByteArrayInputStream(imageByte);
                image = ImageIO.read(bis);
                bis.close();
            }
            catch (Exception e)
            {
                e.printStackTrace();
            }
            return image;
        }
        
        public static String encodeToString(BufferedImage image, String type)
        {
            String imageString = null;
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            try
            {
                ImageIO.write(image, type, bos);
                byte[] imageBytes = bos.toByteArray();
        
                BASE64Encoder encoder = new BASE64Encoder();
                imageString = encoder.encode(imageBytes);
        
                bos.close();
            } 
            catch (IOException e)
            {
                e.printStackTrace();
            }
            return imageString;
        }
        

        如果你从 URL

        读取文件
        try 
        {
            URL url = new URL("example.com/example.txt");
            BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
            String str;
            while ((str = in.readLine()) != null)
            {
                // str is one line of text; readLine() strips the newline character(s)
            }
            in.close();
        } 
        catch (Exception e) 
        {
        e.printStackTrace();
        } 
        

        【讨论】:

          猜你喜欢
          • 2013-07-16
          • 1970-01-01
          • 1970-01-01
          • 2016-03-24
          • 1970-01-01
          • 2020-09-25
          • 2021-03-26
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多