2013-12-03 5 views
0

Итак, у нас есть требование загрузить файл на сервер sharepoint с помощью клиента iOS. Мы можем загружать размер файла до 40 КБ, но проблема в том, что данные файла, которые мы передаем, находятся в кодировке Base64, и он не подходит для размера файла более 40 КБ, потому что мы не можем передавать большие данные в мыльном сообщении, поэтому мы пробовали различные подходы и упомянутых в Интернете. These are the ways we tried outзапрос мыла Sharepoint MTOM

, и мы остаемся с отправкой только данных с использованием MTOM.

После много экспериментов и поиска Я думаю, что MTOM - это способ загрузки данных с использованием мыла. Мы используем CopyIntoItems sharepoint для загрузки.

запрос Мыло выглядит

<"xmlns:soap12=\"http://schemas.xmlsoap.org/soap/envelope/\">\n" 
            "<soap12:Body>\n" 
            "<CopyIntoItems xmlns=\"http://schemas.microsoft.com/sharepoint/soap/\">\n" 
            "<SourceUrl>%@</SourceUrl>\n" 
            "<DestinationUrls>\n" 
            "<string>%@</string>\n" 
            "</DestinationUrls>\n" 
            "<Fields>\n" 
            "%@" 
            "</Fields>\n" 
            "<Stream>MY_FILE_DATA</Stream>\n" 
            "</CopyIntoItems>\n" 
            "</soap12:Body>\n" 
            "</soap12:Envelope>\n" 

Теперь проблема заключается в том, как мы форматировать этот запрос мыло в пути MTOM принимает, потому что CopyIntoItems не может работать в другом формате.

Несколько образцов MTOM, которые я посмотрел в

http://pic.dhe.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.websphere.wsfep.multiplatform.doc/info/ae/ae/cwbs_soapmtom.html

http://cxf.apache.org/docs/mtom.html

Любая помощь будет много appreciated..Thanks .. !!

ответ

0

Как использовать HTTP-сообщение и разрабатывать Http-обработчик для хранения опубликованных данных?

Очень просто настроить обработчик http в Sharepoint (MSDN), а в методе запроса процесса вы можете использовать строку запроса, чтобы получить нужную вам информацию. Предположим, вы создали обработчик Upload.ashx.

public void ProcessRequest(HttpContext context) 
{ 
    var targetList = context.Request["targetList"]; 
    var targetFileName = context.Request["targetFn"]; 
    // Get the stream to content 
    var stream = context.Request.GetBufferedInputStream(); 
    // Save the file somewhere 
} 

От клиента вы делаете HTTP пост в http://server/_layouts /15/Upload.ashx?targetList=myFiles & ...

+0

Благодаря Стефано. Поскольку мы разрабатываем это приложение в iOS (iPhone/iPad), поэтому не могли действительно использовать классы или APIS из MSDN или C#. Если вы можете объяснить шаги, я могу попробовать конвертировать их в iOS. –

+0

Код, который я написал для серверной части (SharePoint). На стороне клиента это просто Http Post. Если вы не имеете доступа к серверной стороне, вы не можете применить это решение. –

+0

Мы можем внести это изменение на сервер, но проблема заключается в простой HTTP-почте, как мы можем использовать запрос Sharepoint CopyIntoItems? –