Oracle ADF - Как сделать pas pdf файл приложенным к REST-сервису - PullRequest
0 голосов
/ 11 октября 2018

Мы создали приложение adf, в котором пользовательский интерфейс имеет опцию просмотра файлов и кнопку загрузки.Как только мы просматриваем файл (в нашем случае это всегда только файл pdf) и нажимаем на кнопку загрузки, управление переходит к методу класса java, где нам нужно передать этот файл просмотра в службу REST, которая в дальнейшем переместит этот файл в другое место.

Мы пытались реализовать описанный выше сценарий, но наш файл дел создается на сервере, но в нем нет содержимого.ниже приведен пример кода ..

public void uploadFileEditCBAVC(ValueChangeEvent vce) {
    if (vce.getNewValue() != null) {

      UploadedFile fileVal = (UploadedFile)vce.getNewValue();

      String url = "http://<host>/ws/rest/Contract/PDF/";
      String charset = "UTF-8";
     // String param = "value";
      File binaryFile  = new File(fileVal.getFilename());
      String boundary = Long.toHexString(System.currentTimeMillis()); // Just generate some unique random value.
      String CRLF = "\r\n"; // Line separator required by multipart/form-data.
      try{
      URLConnection connection = new URL(url).openConnection();
      connection.setRequestProperty("Authorization", "Basic QUJNREVWQGR");
      connection.setDoOutput(true);
      connection.setRequestProperty("Content-Type", "application/pdf; boundary=" + boundary);

      OutputStream output = connection.getOutputStream();
      PrintWriter writer = new PrintWriter(new OutputStreamWriter(output, charset), true);
         // Send binary file.
      writer.append("--" + boundary).append(CRLF);
      writer.append("Content-Disposition: form-data; name=\"binaryFile\"; filename=\"" + binaryFile.getName() + "\"").append(CRLF);
      writer.append("Content-Type: " + URLConnection.guessContentTypeFromName(binaryFile.getName())).append(CRLF);
      writer.append("Content-Transfer-Encoding: binary").append(CRLF);
      writer.append(CRLF).flush();

      output.flush(); // Important before continuing with writer!
      writer.append(CRLF).flush(); // CRLF is important! It indicates end of boundary.

      // End of multipart/form-data.
      writer.append("--" + boundary + "--").append(CRLF).flush();

     // Request is lazily fired whenever you need to obtain information about response.
     int responseCode = ((HttpURLConnection) connection).getResponseCode();
          System.out.println("responseCode : "+responseCode);
     }
     catch (MalformedURLException e) {
            e.printStackTrace();
           // return e.getMessage();
      } catch (IOException e) {
            e.printStackTrace();
           // return e.getMessage();
      } 

      // Reset inputFile component after upload
      ResetUtils.reset(vce.getComponent());
    }

Может ли кто-нибудь помочь здесь, как добиться того же, Любая ссылка или пример кода будут полезны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...