2009-07-08 2 views
0

Я ищу решение для загрузки файла с клиента на сервер, подключенный через веб-службу. Клиент написан на C# и веб-службе в java. Файлы могут быть довольно большими < 100MB.Загрузить файл в webservice (java)

Какой подход вы бы предложили лучше всего?

ответ

2

Base64 кодирует файл и отправляет его в виде вложения. Если вам нужно убедиться, что содержимое вложения не изменяется в пути, используйте MTOM. В противном случае используйте DIME.

1

Согласуйте кодировку как на клиенте, так и на сервере, затем выполните сериализацию файла с использованием этой кодировки, оберните его в теги CDATA и присвойте значение текстовому узлу в запросе SOAP на клиенте.

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

Возможно, хорошая идея для кодирования включать какое-то сжатие, если файлы большие, хотя опасайтесь проблем с interop, если клиент является .NET и сервер Java.

+0

Существует возможная проблема в этом подходе: если вы не используете MTOM или DIME, то весь файл должен храниться в памяти со стороны Java внутри контейнера веб-службы, что приводит к проблемам с памятью, если слишком много клиентов. – massimogentilini

1

Для стороны сервера, вы должны взглянуть на Commons File Upload

+3

. Загрузка файла Commons предназначена для работы с форматами HTML и будет полагаться на то, что вы имеете доступ к HTTP-запросу как на клиенте, так и на сервере, Обычно это относится к общим API WS. –

Смежные вопросы