Как выполнить SWF без браузера (на сервере Linux)?

В итоге я использовал 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, но вы обязательно сэкономите время .

13
задан serg 8 May 2009 в 03:19
поделиться

6 ответов

Вы можете использовать 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
9
ответ дан 2 December 2019 в 00:03
поделиться

Вы можете легко (ish) написать программу на C, которая реализует интерфейс плагина netscape для непосредственного взаимодействия с Flash. Это сработало бы.

Однако, вероятно, для этого все еще требовался бы X-сервер - вы могли бы использовать XVnc или что-то еще для запуска без головы.

Нетривиально, но сработало бы.

Ваше требование звучит немного странно - возможно, было бы более приемлемо переписать компонент Flash на другом языке.

1
ответ дан 2 December 2019 в 00:03
поделиться

Ichabod от Adobe, вероятно, решит вашу проблему, но я не могу найти какую-либо информацию, доступна ли она для общего пользования или только для поставщиков услуг поиска. Просто эхо-камера статей вроде одной на ReadWriteWeb .

или только для поставщиков услуг поиска. Просто эхо-камера статей вроде одной на ReadWriteWeb .

или только для поставщиков услуг поиска. Просто эхо-камера статей вроде одной на ReadWriteWeb .

1
ответ дан 2 December 2019 в 00:03
поделиться

Вы можете сделать SWF доступным и защитить каталог, используя файлы .htaccess.

См. Apache .htaccess Tutorial для получения дополнительной информации.

Вы также можете попробуйте ffplay (ffplay -fs somefile.swf), чтобы запустить swf.

Отредактировано: Похоже, ffplay использует SDL, поэтому X может не требоваться.

Но я не думаю, что это будет установлено на вашем сервере. YMMV

Обновлено: не позволяйте графическому интерфейсу пользователя останавливать вас в том, что вы можете сделать, если вы используете SSH, посмотрите в этой статье, как экспортировать свой X-дисплей на локальную рабочую станцию. Попытка туннелировать X через SSH

1
ответ дан 2 December 2019 в 00:03
поделиться

Adobe Air?

Основная проблема - это командная строка, а не «веб-доступность». Если вы можете запустить FireFox, я уверен, что вы можете загрузить файл по пути файловой системы. Я был бы очень удивлен, если бы можно было запускать SWF-файлы из командной строки. Я не имею в виду, что это невозможно в принципе, просто смысл SWF обычно в отображении некоторого мигающего и прыгающего мусора, поэтому никто не утруждает себя написанием инструментов командной строки для его запуска ...

PS. Я полагаю, вы знаете, что вы можете запускать FireFox на сервере Linux, верно? (Вся эта штука с X Windows?)

1
ответ дан 2 December 2019 в 00:03
поделиться

Если вы используете ubuntu, введите sudo apt-get install xvfb, а затем скачайте flashplayer от adobe, и просто попробуйте так, он работает хорошо:

xvfb-run ./flashplayer test.swf

Или если вы используете windows, вы можете просто дважды щелкнуть swf на сервере, и он работает сейчас, связь с другим сервером, просто использовать этот swf как часть сервера, вычислить значение и вернуть, swf запустить цикл навсегда, как это сервер

2
ответ дан 2 December 2019 в 00:03
поделиться
Другие вопросы по тегам:

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