В итоге я использовал 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, но вы обязательно сэкономите время .
Вы можете использовать Xvfb
или Xfake
для запуска X-сервера, который не взаимодействует с реальным оборудованием. Если они недоступны в виде пакетов для вашего дистрибутива, вы можете собрать их из исходных кодов Xorg xserver.
(Или используйте предложение MarkR Xvnc
.)
Плагин Adobe, используемый для поставки с автономный исполняемый файл с именем flashplayer
или gflashplayer
, который можно было использовать вне браузера. Я думаю, что он все еще существует, но находится в пакете разработчика или что-то в этом роде.
Если вы используете бесплатную реализацию Flash, s не используется; нормальные дисплеи начинаются с : 0
, ssh
перенаправление X обычно выделяет : 10
и выше, и я видел несколько Xvnc
настройки начинаются с : 90
) и запускают внутри него gnash
:
startx /usr/bin/gnash http://url.to/flash.swf -- /usr/bin/Xvfb :20
Вы можете легко (ish) написать программу на C, которая реализует интерфейс плагина netscape для непосредственного взаимодействия с Flash. Это сработало бы.
Однако, вероятно, для этого все еще требовался бы X-сервер - вы могли бы использовать XVnc или что-то еще для запуска без головы.
Нетривиально, но сработало бы.
Ваше требование звучит немного странно - возможно, было бы более приемлемо переписать компонент Flash на другом языке.
Ichabod от Adobe, вероятно, решит вашу проблему, но я не могу найти какую-либо информацию, доступна ли она для общего пользования или только для поставщиков услуг поиска. Просто эхо-камера статей вроде одной на ReadWriteWeb .
или только для поставщиков услуг поиска. Просто эхо-камера статей вроде одной на ReadWriteWeb . или только для поставщиков услуг поиска. Просто эхо-камера статей вроде одной на ReadWriteWeb .Вы можете сделать SWF доступным и защитить каталог, используя файлы .htaccess.
См. Apache .htaccess Tutorial для получения дополнительной информации.
Вы также можете попробуйте ffplay (ffplay -fs somefile.swf), чтобы запустить swf.
Отредактировано: Похоже, ffplay использует SDL, поэтому X может не требоваться.
Но я не думаю, что это будет установлено на вашем сервере. YMMV
Обновлено: не позволяйте графическому интерфейсу пользователя останавливать вас в том, что вы можете сделать, если вы используете SSH, посмотрите в этой статье, как экспортировать свой X-дисплей на локальную рабочую станцию. Попытка туннелировать X через SSH
Adobe Air?
Основная проблема - это командная строка, а не «веб-доступность». Если вы можете запустить FireFox, я уверен, что вы можете загрузить файл по пути файловой системы. Я был бы очень удивлен, если бы можно было запускать SWF-файлы из командной строки. Я не имею в виду, что это невозможно в принципе, просто смысл SWF обычно в отображении некоторого мигающего и прыгающего мусора, поэтому никто не утруждает себя написанием инструментов командной строки для его запуска ...
PS. Я полагаю, вы знаете, что вы можете запускать FireFox на сервере Linux, верно? (Вся эта штука с X Windows?)
Если вы используете ubuntu, введите sudo apt-get install xvfb
, а затем скачайте flashplayer от adobe, и просто попробуйте так, он работает хорошо:
xvfb-run ./flashplayer test.swf
Или если вы используете windows, вы можете просто дважды щелкнуть swf на сервере, и он работает сейчас, связь с другим сервером, просто использовать этот swf как часть сервера, вычислить значение и вернуть, swf запустить цикл навсегда, как это сервер