Мы создали приложение 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());
}
Может ли кто-нибудь помочь здесь, как добиться того же, Любая ссылка или пример кода будут полезны.