Я ищу решение для загрузки файла с клиента на сервер, подключенный через веб-службу. Клиент написан на C# и веб-службе в java. Файлы могут быть довольно большими < 100MB.Загрузить файл в webservice (java)
Какой подход вы бы предложили лучше всего?
Я ищу решение для загрузки файла с клиента на сервер, подключенный через веб-службу. Клиент написан на C# и веб-службе в java. Файлы могут быть довольно большими < 100MB.Загрузить файл в webservice (java)
Какой подход вы бы предложили лучше всего?
Base64 кодирует файл и отправляет его в виде вложения. Если вам нужно убедиться, что содержимое вложения не изменяется в пути, используйте MTOM. В противном случае используйте DIME.
Согласуйте кодировку как на клиенте, так и на сервере, затем выполните сериализацию файла с использованием этой кодировки, оберните его в теги CDATA
и присвойте значение текстовому узлу в запросе SOAP на клиенте.
Прочитайте данные между тегами CDATA на сервере, десериализуйте их, используя согласованную кодировку, и вы будете использовать поток байтов, если необходимо.
Возможно, хорошая идея для кодирования включать какое-то сжатие, если файлы большие, хотя опасайтесь проблем с interop, если клиент является .NET и сервер Java.
Для стороны сервера, вы должны взглянуть на Commons File Upload
. Загрузка файла Commons предназначена для работы с форматами HTML и будет полагаться на то, что вы имеете доступ к HTTP-запросу как на клиенте, так и на сервере, Обычно это относится к общим API WS. –
Существует возможная проблема в этом подходе: если вы не используете MTOM или DIME, то весь файл должен храниться в памяти со стороны Java внутри контейнера веб-службы, что приводит к проблемам с памятью, если слишком много клиентов. – massimogentilini