Мне нужно обслуживать двоичный файл через веб-сервис, реализованный в Python / Django.Проблема в том, что когда я сравниваю исходный файл с переданным файлом с vbindiff , я вижу конечные байты в переданном файле, к сожалению, делая его бесполезным.
Доступ к двоичному файлу сохраняется с помощьюклиент на Java с:
HttpURLConnection userdataConnection = null;
URL userdataUrl = null;
try {
userdataUrl = new URL("http://localhost:8000/app/vuforia/10");
userdataConnection = (HttpURLConnection) userdataUrl.openConnection();
userdataConnection.setRequestMethod("GET");
userdataConnection.setRequestProperty("Content-Type", "application/octet-stream");
userdataConnection.connect();
InputStream userdataStream = new BufferedInputStream(userdataConnection.getInputStream());
try (ByteArrayOutputStream fileStream = new ByteArrayOutputStream()) {
byte[] buffer = new byte[4094];
while (userdataStream.read(buffer) != -1) {
fileStream.write(buffer);
}
byte[] fileBytes = fileStream.toByteArray();
try (FileOutputStream fos = new FileOutputStream("./test.dat")) {
fos.write(fileBytes);
}
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Я думаю, что HttpURLConnection.getInputStream читает только тело ответа, или нет?
Этот код обслуживает данные в бэкэнде
в views.py:
if request.method == "GET":
all_data = VuforiaDatabase.objects.all()
data = all_data.get(id=version)
return FileResponse(data.get_dat_bytes())
в models.py:
def get_dat_bytes(self):
return self.dat_upload.open()
Как мне передать двоичные данные 1: 1?