Почему AWS Lambda не загружает изображения на S3 должным образом?

Хорошо, я использовал ответы на этот вопрос в Oracle CRM onDemand, чтобы отключить выбор во всплывающем окне, выполняющем скрипт из родительского окна, и это сработало! (Я не контролирую генерацию всплывающих окон, они открываются каркасом приложения)

Посмотрим, как я это сделал:

Контекст: на подробной странице пользователь может добавьте информацию, щелкнув значок увеличительного стекла >>> открывается новое окно, содержащее форму поиска, но выбор нарушает администратора: если пользователь изменит свое значение по умолчанию, он / она получит доступ к запрещенным записям!

Первый подход: отключить это сейчас!

Попытка: я нашел, что изображение onclick связано с инструментами моего браузера (F12). Был метод openAssocPopup, а затем я знал имя дочернего окна: «OccamPopup1»:)

Хорошо! Итак, давайте сделаем волшебство (выполнено в родительском окне):

window.open("","OccamPopup1").document.getElementById("frmSearch.AQ").setAttribute("disabled", true);

Я думаю, это может помочь, так как этот вопрос мне тоже помог. Ты был прав. Теперь я пытаюсь обернуть объект документа ребенка в объект родительского jQuery, чтобы я мог получить доступ к DOM всего дочернего объекта ... но это еще одна история ...

1
задан Fran Roura 1 March 2019 в 13:12
поделиться

1 ответ

В итоге я использовал SES и SNS для отладки лямбды в реальном времени. Мне буквально пришлось сериализовать объект IFormFile в виде строки и отправить его себе по электронной почте при каждой загрузке изображения. Я также настроил SMS с длиной IFormFile.

На всякий случай это поможет кому-нибудь еще в будущем; дополнительные байты уже были там, как только запрос был обработан. Я имею в виду, что файл размером 29,7 КБ выводил 53000 ~ байтов, поскольку он .Length был в первый момент выполнения конечной точки, поэтому это не было лямбда-проблемой (хотя, возможно, это была конфигурация нашего API-шлюза или .NET Core). [114 ]

В любом случае, мы исправили это, ожидая строку base64 как свойство application/json и расшифровав ее следующим образом:

var imageParts = base64Image.Split(',').ToList();
var buffer = Convert.FromBase64String(imageParts[1]);
await memoryStream.WriteAsync(buffer, 0, buffer.Length);
var fileTransferUtilityRequest = new TransferUtilityUploadRequest
{
    InputStream = memoryStream,
    Key = fileName,
    BucketName = s3Config.BucketName,
    CannedACL = S3CannedACL.BucketOwnerFullControl,
    ContentType = "image/{0}".FormatWith(fileExtension)
};
await fileTransferUtility.UploadAsync(fileTransferUtilityRequest);

Где base64Image - строка в кодировке base64.

В случае, если кто-то окажется в том же месте, где мы были вчера, просто проигнорируйте фактическую причину проблемы и используйте Base64, она может быть не такой производительной, как файл внутри FormBody, но вы обязательно сэкономите время .

0
ответ дан Fran Roura 1 March 2019 в 13:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: