#php #rest #file-upload #base64 #checksum
#php #остальное #загрузка файла #base64 #контрольная сумма
Вопрос:
В моем проекте мне нужно передать изображение через API. Перед передачей я кодирую необработанные данные изображения base64
, чтобы я мог использовать их в запросе JSON. Что я хочу сделать, это добавить контрольную сумму файла в запрос, чтобы я мог проверить на своей стороне API, был ли файл успешно передан.
Мой вопрос — должен ли я вычислять контрольную сумму до или после base64?
// Client
$checksum = md5($rawImageData);
$base64ImageData = base64_encode($rawImageData);
// API
$receivedBase64 = $_POST['base64ImageData'];
$receivedChecksum = $_POST['checksum'];
$imageData = base64_decode($receivedBase64);
$actualChecksum = md5($imageData);
if ($receivedChecksum != $actualChecksum) {
// Image not transfered correctly.
}
Или я должен сначала кодировать данные base64
, затем вычислять контрольную сумму md5 и на стороне API сравнивать ее с контрольной суммой полученного base64? Или это не имеет значения, и оба решения имеют одинаковую надежность? Спасибо
Комментарии:
1. Зачем вам нужна контрольная сумма? Если вы используете HTTP через TCP / IP, в который уже встроены всевозможные контрольные суммы, то вы не получите неверных данных из-за сети.
2. Вы должны получить контрольную сумму до того, как произойдет какая-либо манипуляция с данными.. всегда. Это гарантирует, что ничто не сможет скрыть ваши результаты
3. контрольная сумма перед base64
Ответ №1:
Ну, ваш вопрос на самом деле не является вопросом REST или вопросом php…
Если бы вы собирались начать преобразование данных, чтобы затем отправить, а затем отменить эти преобразования, обычно имело бы смысл указывать контрольную сумму в самых концах.
Вам также нужно иметь в виду, что HTTP предложит вам достаточную защиту / исправление. Я был бы склонен сказать, что даже не беспокойтесь о контрольной сумме. Из описания вашего варианта использования не похоже, что вам действительно нужно добавлять контрольную сумму.