Форма файла для загрузки через Интернет в Sharepoint

Могу ли я сделать форму загрузки файла в какой-нибудь песочнице WebPart для Sharepoint Онлайн, и если я могу, то как?

Я много искал и нашел только решения, доступные для клиентской объектной модели для внешних клиентов, нет примера, как это сделать с JSOM (клиентская объектная модель для Javascript), а обычный способ загрузки с asp:FileUpload не работает в песочнице решение, длина PostedFile = 0


person GrigTheFirst    schedule 24.12.2012    source источник


Ответы (3)


У вас есть возможность использовать элемент управления ActiveX STSUPld.UploadCtl — это позволяет обеспечить загрузку нескольких файлов, как вы видите в библиотеке документов.

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

<script type="text/jscript">
function DocumentUpload() {
    var uploadCtl = document.getElementById("idUploadCtl");
    uploadCtl.MultipleUpload();
}
</script>

<input type='hidden' name='Confirmation-URL' id='Confirmation-URL' value='' />
<input type='hidden' name='PostURL' id='PostURL' value='' />
<input type="hidden" name="Cmd" value="Save" />
<input type="hidden" name="putopts" value="true" /> <!-- Overwrite files -->
<input type="hidden" name="VTI-GROUP" value="0" />
<input type="hidden" name="destination" id="destination" value="/TestDL" /> <!-- Files destination path, must already exist -->
<p style="margin-left:auto;margin-right:auto;margin-top:0px;margin-bottom:0px;text-align:center;padding:0px !important; vertical-align:top;width:100%;">
    <script type="text/javascript">
        try {
            if (new ActiveXObject("STSUpld.UploadCtl"))
                document.write("<OBJECT id=\"idUploadCtl\" name=\"idUploadCtl\" CLASSID=\"CLSID:07B06095-5687-4d13-9E32-12B4259C9813\" WIDTH=\"600px\" HEIGHT=\"250px\" ></OBJECT>");
        }
        catch (error) {
        }
    </script>
<asp:Button runat="server" accesskey="O" id="OKButton" CssClass="ms-ButtonHeightWidth" OnPropertyChange="if (this.value != 'Upload files') this.click();" Text="Upload files" UseSubmitBehavior="False" OnClientClick="DocumentUpload(); return false;" />
<asp:Button runat="server" accesskey="C" id="CancelButton" CssClass="ms-ButtonHeightWidth" Text="Cancel" UseSubmitBehavior="False" OnClientClick="window.location ='<somewhere to go>'; return false;" />

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

person David Sterling    schedule 14.03.2013

После некоторого поиска я наконец нашел решение, основанное на SPServices Codeplex. Есть плагин SPWidgets(https://github.com/purtuga/SPWidgets/). Этот плагин загружает iframe с upload.asmx (форма загрузки по умолчанию в Sharepoint), затем устанавливает display: none для всех элементов на этой странице, кроме input[type=file] и добавляет кнопку, которая может отправить форму в iframe. После отправки плагин перехватывает состояние iframe (событие _onIFramePageChange) и выполняет некоторые обратные вызовы в зависимости от URL-адреса iframe.

Это выглядит как какой-то уродливый обходной путь, но это единственное рабочее решение, которое я нашел после нескольких часов поиска.

person GrigTheFirst    schedule 14.01.2013

Вариантов не так много, однако ознакомьтесь с SPServices на CodePlex — это лучшее место для начала. Помните: SharePoint ожидает двоичный объект при вызове службы. Вы должны сначала захватить файл и преобразовать его в двоичный файл, а затем вызвать веб-службу для загрузки.

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

person David Sterling    schedule 25.12.2012
comment
извините за долгий ответ :( Я копался в этом направлении, и единственное решение, которое я нашел, заключалось в том, чтобы получить iframe со страницей загрузки sharepoint и использовать его, но это, ИМХО, уродливое решение, поэтому ваш пример действительно может мне помочь! - person GrigTheFirst; 11.01.2013