2012-12-24 72 views
1

我可以在一些沙盒上做文件上傳WebPartSharepoint在線,如果可以,我該怎麼辦?Sharepoint在線上傳文件形式

我已經搜索了很多,發現只有解決方案,可用於外部客戶端的客戶端對象模型,沒有示例如何使用JSOM(用於Javascript的客戶端對象模型)以及通常的方式來上傳asp:FileUpload don' t工作在沙盒解決方案,PostedFile長度= 0

回答

0

一些搜索後,我終於找到了解決方案,基於Codeplex上的SPServices。有插件SPWidgets(https://github.com/purtuga/SPWidgets/)。這個插件加載具有upload.asmx的iframe(SharePoint的默認上載形式),則設置顯示:沒有此頁面上的所有元素,exept輸入[類型=文件]和增加按鈕,至極可以iframe中提交的形式。提交後插件漁獲iframe的狀態(_onIFramePageChange事件),並做一些回調依賴於iframe網址。

這看起來像一些醜陋的解決方法,但它只是工作解決方案,我發現幾小時的搜索。

0

沒有太多的選擇,但檢查CodePlex上的SPServices - 這將是最好的開始。請記住 - SharePoint在調用服務時需要一個二進制對象。您必須先捕獲文件並將其轉換爲二進制文件,然後調用Web服務進行上傳。

我有一個例子,但沒有在當前位置與我 - 如果上述不讓你開始,讓我知道,我會找到併發布。

大衛·斯特林

+0

對不起長響應:(我已經挖成方向,唯一的解決辦法,我發現是獲得與SharePoint的上傳頁面中的iframe和使用它,但它是,恕我直言,醜陋的解決方案,所以你的例子可以真正幫助我! – GrigTheFirst

1

您可以選擇使用ActiveX STSUpld.UploadCtl控件 - 這使您可以像在文檔庫中看到的那樣提供多文件上載。

請注意,在以下內容中必須設置確認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;" /> 

希望這有助於....