zoukankan      html  css  js  c++  java
  • sharepoint 2010 扩展富文本框上传图片功能extend InputFormTextBox for uploading image

    在sharepoint开发中,我们有时候会用到一个叫富文本框的控件InputFormTextBox,这个控件非常好用,只是有一个地方不太人性化,就是插入上传图片的时候,只能是插入一个图片地址,而没有选择本地图片的功能。我们看看原来的界面时什么样的。

    首先,在页面或者是webpart上面,添加一个富文本框InputFormTextBox的控件

    <SharePoint:InputFormTextBoxTitle="" ID="txtContents" runat="server"TextMode="MultiLine"

                                Rows="15"RichText="true" AllowHyperlink="true" RichTextMode="FullHtml" Width="98%" />

    运行后的效果如下图,并点击一下插入图片的小按钮

    这个时候会show出一个插入图片的页面。

    发现不能直接使用上传本地图片的操作,只能插入一个服务器图片链接,很明显做得不够人性化。

    这次主要是扩展下这个页面,扩展成可以添加浏览本地图片的功能,如下图:

    下面是这个功能的具体做法。

    在做这个功能之前,首先需要在网站上面创建一个图片库列表(图片资源
    富文本框页面代码

    <asp:ContentID="Main" ContentPlaceHolderID="PlaceHolderMain" runat="server">

        <script>

            function RTE_ModalDialog(

        strBaseElementID,

        strDialogName,

        width,

        height,

        dialogArg) {

                ULSopi: ;

                var variables = RTE_GetEditorInstanceVariables(strBaseElementID);

                if (strDialogName == "InsertImage") {

                    return showModalDialog(

                    variables.aSettings.urlWebRoot + "/_layouts/SharePointProject1/ApplicationPage2.aspx?IsDlg=1&Dialog=" + strDialogName +"&LCID=" + RTE_GetWebLocale(strBaseElementID) +"&IsDlg=1",

                    dialogArg,

                    "resizable: no; status: no; help: no; " +"scroll:no;center: yes; dialogWidth:" + width +"px; " + "dialogHeight:" + height +"px;");

                }

                else {

                    return showModalDialog(

            variables.aSettings.urlWebRoot + "/_layouts/RteDialog.aspx?Dialog=" + strDialogName + "&LCID=" + RTE_GetWebLocale(strBaseElementID),

            dialogArg,

            "resizable: yes; status: no; help: no; " +"center: yes; dialogWidth:" + width + "px; " + "dialogHeight:" + height + "px;");

                }

            }

        </script>

        <SharePoint:InputFormTextBoxTitle="" ID="txtContents" runat="server"TextMode="MultiLine"

            Rows="15"RichText="true" AllowHyperlink="true" RichTextMode="FullHtml" Width="98%" />

    </asp:Content>

    弹出页面代码:

    <asp:ContentID="PageHead" ContentPlaceHolderID="PlaceHolderAdditionalPageHead"runat="server">

        <basetarget="_self">

    </asp:Content>

    <asp:ContentID="Main" ContentPlaceHolderID="PlaceHolderMain" runat="server">

        function ReturnPageValue(imgurl, des)

        {

            var array = new Array();

            array[0] = imgurl;

            array[1] = des;

            window.returnValue = array;

            window.close();

        }

        <styletype="text/css">

            .TdNowrap

            {

                white-space: nowrap;

                vertical-align: top;

            }

        </style>

        <divstyle="">

            <tablestyle="margin: auto;width: 250px;">

                <trclass="TdNowrap">

                    <td>

                        请选择你要上传的图片

                    </td>

                </tr>

                <tr>

                    <tdclass="TdNowrap">

                        文字描述:<inputid="txtDes" type="text" runat="server"/>

                    </td>

                </tr>

                <tr>

                    <tdclass="TdNowrap">

                        <asp:FileUploadID="flUpload" runat="server" />

                    </td>

                </tr>

                <tr>

                    <tdclass="TdNowrap" align="center">

                        <asp:ButtonID="BtnSubmit" runat="server" Text="提交"OnClick="btnSave_Click"/>

                        <inputid="BtnClose" type="button" value="关闭"onclick="window.close();"/>

                    </td>

                </tr>

            </table>

        </div>

    </asp:Content>

    弹出窗口后台代码

    protected void btnSave_Click(object sender, EventArgs e)

     {

                SPSecurity.RunWithElevatedPrivileges(delegate()

                {

                    byte[] imageData =null;

                    if ((flUpload.PostedFile !=null) && (flUpload.PostedFile.ContentLength > 0))

                    {

                        Stream MyStream = flUpload.PostedFile.InputStream;

                        long iLength = MyStream.Length;

                        imageData = newbyte[(int)MyStream.Length];

                        MyStream.Read(imageData, 0, (int)MyStream.Length);

                        MyStream.Close();

                        string filename = System.IO.Path.GetFileName(flUpload.PostedFile.FileName);

                        SPWeb web =SPContext.Current.Web;

                        SPPictureLibrary pic = (SPPictureLibrary)web.Lists["图片资源"];

                        SPFile archivoSubir = pic.RootFolder.Files.Add(filename, imageData);

                        string imageurl = archivoSubir.ServerRelativeUrl;

                        web.Dispose();

                        ClientScript.RegisterStartupScript(ClientScript.GetType(),"myscript", "<script>ReturnPageValue('" + imageurl +"');</script>");

                    }

                });

            }

    这个功能最关键的地方,就是重写了一个js的方法:RTE_ModalDialog

  • 相关阅读:
    [leetcode]Valid Number
    [leetcode]Edit Distance
    [leetcode]Decode Ways
    [leetcode]Maximum Depth of Binary Tree
    [topcoder]BadNeighbors
    [topcoder]ZigZag
    [leetcode]Subsets II
    [leetcode]Merge Sorted Array
    [leetcode]Binary Tree Maximum Path Sum
    hdu 2964 Prime Bases(简单数学题)
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3017464.html
Copyright © 2011-2022 走看看