Загрузите обрезанное изображение "croppie" на сервер, используя Java PlayFramework 2.6 - PullRequest
0 голосов
/ 28 августа 2018

Я гуглил последние 2 дня и до сих пор не могу найти решение этой проблемы. Я могу загрузить нормально, используя элемент ввода с атрибутом типа, установленным в файл. Но я не могу загрузить обрезанное изображение с помощью croppie на сервер.

Вот мой register.scala.html:

@helper.form(action = routes.ProfilesController.upload, 'id -> "profileForm", 'class -> "", 'enctype -> "multipart/form-data") {
@CSRF.formField

<div  class="col-6 col-md-3 pic-padding">


<div id="upload-demo" class="upload-demo pic-1 mx-auto d-block rounded">

</div>

<div class="pic-number" href="#">1</div>
<label for="upload-pic1" class="pic-control-bg">
  <img src="@routes.Assets.versioned("images/plus.png")" class="pic-control">
</label>

<input type="file" id="upload-pic1" name="pic1" class="upload-btn" accept="image/*">


<button type="button" class="upload-result">Result</button>

<script>
  Demo.init();

</script>

</div>
}

Вот мой main.js:

$('.upload-result').on('click', function (ev) {
  $uploadCrop.croppie('result', {
    type: 'canvas',
    size: 'viewport'
  }).then(function (resp) {
    $.ajax({
      url: "http://localhost:9000/upload",
      type: "POST",
      data: {"image":resp},
      success: function (data) {
        alert(resp);
      }
    });
  });
});

Вот мой ProfilesController.java

public Result upload() {
    File file = request().body().asRaw().asFile();
    return ok("File uploaded");
}

Вот фрагмент из файла маршрутов:

POST    /upload                     controllers.ProfilesController.upload()

Ошибка, которую я получаю с вышеуказанным решением:

[CompletionException: java.lang.NullPointerException]

Пожалуйста, помогите! Последние два дня это меня напрягало, я просто не могу понять.

1 Ответ

0 голосов
/ 30 августа 2018

Это не полностью решено, но я достаточно прогрессировал, чтобы создать другую проблему. В итоге я изменил свой запрос ajax в main.js на:

$. Ajax ({ URL: "http://localhost:9000/upload", тип: "POST", данные: соответственно success: function (data) { оповещения (соответственно);

Затем я также изменил profilecontroller.java на

public Result upload () {

    String dataUrl = request().body().asText();
    System.out.println(dataUrl);

    return ok("Data URI Passed");

}

Это дало мне URI данных из javascript и передало его в код JAVA. Теперь мне нужно попытаться загрузить изображение, используя URI данных. Если вы знаете ответ на этот вопрос, пожалуйста, внесите свой вклад в этот пост.

...