base64 в файл изображения

0

Я использую summernote и хочу, чтобы загрузка сервера была асинхронно. Я планирую преобразовать изображение в base64 и отправить сервлет через ajax, там я сохраню сжатие файла и верну 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"); 
            }
        });
}

ниже мой код сервлета. здесь я получаю файл как null. Я считаю, что я должен получить файл как строку здесь. может кто-нибудь помочь, почему?

 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);


    }
Теги:
filereader

3 ответа

1

Наконец я нашел ответ на этот вопрос. Мне пришлось модифицировать summernote и завернутый входной файл в форме и возвратил форму оттуда, которую я опубликовал с помощью iframe.

Я googled и нашел, что мы не можем установить имя файла динамически для ввода файла из соображений безопасности.

0

вы можете попробовать request.getReader()?

0

Попробуй это

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню