Загрузка больших файлов на ПК с OAS Server - PullRequest
1 голос
/ 08 августа 2009

У нас есть приложение Oracle 10g форм, работающее на сервере Solaris OAS, с отображением форм в IE. Часть приложения включает загрузку и выгрузку файлов (в основном документов Word и PDF) с ПК на сервер OAS с помощью утилиты Oracle webutil.

Проблема с большими файлами (что-то более 25Мег или около того), это занимает много времени, иногда много минут. Загрузка, кажется, работает, даже с большими файлами. Однако загрузка больших файлов приведет к ошибке во время загрузки.

Я тестировал файл 189Meg в нашей системе разработки. При использовании WEBUTIL_FILE_TRANSFER.Client_To_DB (или Client_To_DB_with_Progress) загрузка завершится с ошибкой примерно через 24 мегабайта. Я переключился на WEBUTIL_FILE_TRANSFER.URL_To_Client_With_Progress и, наконец, получил весь файл для загрузки, но это заняло 22 минуты. Обойтись без индикатора выполнения можно до 18 минут, но это все еще слишком долго.

Я могу отображать файлы в браузере, и мой тестовый файл отображается примерно через 5 секунд, но многие файлы необходимо загрузить для редактирования, а затем повторно загрузить.

Есть какие-нибудь мысли о том, как выполнить эту загрузку и загрузку быстрее? На данный момент я открыт практически для любой идеи, использует ли она webutil или нет. Решения, которые по крайней мере в некоторой степени являются родными для Oracle, предпочтительнее, но я предпочитаю предложения.

Спасибо, AndyDan

Ответы [ 2 ]

0 голосов
/ 09 сентября 2009

В итоге я использовал CLIENT_HOST для вызова команды FTP для загрузки файлов. Мой тестовый файл объемом 189 МБ занял 20-22 минуты для загрузки с использованием WEBUTIL_FILE_TRANSFER.URL_To_Client_With_Progress и только около 20 секунд с использованием FTP. Это не лучшее решение, потому что оно оставляет пароль FTP открытым для ПК на время, но только на время, необходимое для загрузки, и даже в этом случае пользователь должен знать, где его найти.

Итак, мы реализуем это на данный момент и ищем более безопасное, но все же эффективное долговременное решение.

0 голосов
/ 25 августа 2009

Это может быть полностью на обед, но, так как вы ищете какие-нибудь мысли, которые могли бы помочь, вот мои.

Прежде всего, я предполагаю, что фактическое редактирование файлов происходит вне браузера, и вы просто ищете лучший способ получения файлов туда-сюда.

В этом случае, один из вариантов, который я использовал в прошлом, - это просто обходить веб-приложение с помощью Apache или любого другого ванильного веб-сервера, который вам нравится. Для загрузки создайте уникальный файловый токен сеанса, запомните его в веб-приложении и поместите копию файла, названного с помощью токена (например, <уникальный токен> .doc), в каталог загрузки, видимый для Apache. Затем предоставьте ссылку на файл, который будет обслуживаться через Apache.

Для загрузки у вас есть несколько вариантов. Одним из них является использование механизма, который у вас есть, тогда, когда файл загружен, вам просто нужно сопоставить токен в имени, чтобы исправить файл обратно в ваш архив. Кроме того, вы можете создать очень простую форму загрузки файлов, отдельную от вашего приложения, которая будет загружать файл во временный каталог через Apache, затем направлять пользователя обратно в ваше приложение и предоставлять токен в стиле HTTP HTTP GET или в другом месте. печенье.

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

Кроме того, я не знаю, обеспечивает ли сервер приложений, который вы используете, сжатие HTTP, но если это так, вам следует убедиться, что он включен и работает. Вероятно, это лучшее, что вы можете сделать для увеличения скорости передачи больших файлов, если они достаточно сжимаемы. Если ваш сервер приложений не поддерживает его, то в большинстве случаев это будет любой веб-сервер Vanilla.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...