Я получаю байт [] в параметре запроса в сервлет, который я Fetching в строку, а затем снова превращающего его в байт []:написание байт [] в файл давая поврежденный файл
String encodingScheme = "UTF-8";
request.setCharacterEncoding(encodingScheme);
String requestStr = request.getParameter("inputstream");
byte[] rawRequestMsg = requestStr.getBytes(encodingScheme);
Теперь этот байт [] Я пытаюсь записать в .docx-файл, поскольку этот байт [], который я использую, представляет собой только файл docx byte []. Код для написания этого в файл, как:
String uploadedFileLocation = fileLocation;
FileOutputStream fileOuputStream = new FileOutputStream("path till .docx file");
fileOuputStream.write(byteArray);
fileOuputStream.close();
Проблема заключается в .docx файл создается поврежден и не может открыть, но когда я изменить его .doc, то я могу открыть он, но вместо того, чтобы видеть содержание текста я вижу только байт [] последовательность там, как показано ниже:
80, 75, 3, 4, 20, 0, 6, 0, 8, 0, 0, 0, 33, 0, -84, -122, 80, 87, -114, 1, 0, 0, -64, 5, 0, 0, 19, 0, 8, 2, 91, 67, 111, 110, 116, 101, 110, 116, 95, 84, 121, 112, 101, 115, 93, 46, 120, 109, 108, 32, -94, 4, 2, 40, -96, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
Не знаете, как правильно это записать. Нужна помощь. Спасибо, Самир
На самом деле ниже код используется для работы, которая имеет REST WebService
@
[email protected] Path("/binaryfileupload/{filename}")@ Consumes(MediaType.APPLICATION_OCTET_STREAM)
public Response upload(byte[] input, @PathParam("filename") String filename) {
FileOutputStream fileOuputStream = new FileOutputStream(uploadedFileLocation);
fileOuputStream.write(input);
fileOuputStream.close();
}
Единственное изменение я сделал отсюда этот вход, который является байт [] I я отправляю сервлет и в сервлет хочу записать файл вместо того, чтобы писать в моем webservice (который работал правильно).
Возможно, файл находится в формате DOC, а не в формате DOCX. Они очень разные. –
Проверьте эту ссылку: http://stackoverflow.com/questions/25890776/java-bytearray-to-docx. Возможно, решение может конвертировать DOC с байтом [] в собственно DOCX. –
Глядя на первые несколько байтов, это не похоже на формат DOCX или DOC. Http://www.garykessler.net/library/file_sigs.html –