⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 editorl.ascx.vb

📁 如果不使用IIS,请先运行 XSP.exe,待提示已侦听 8080端口后
💻 VB
字号:
Imports System.IO
Imports System.Text.RegularExpressions

Partial Class htmleditor_editorl
    Inherits System.Web.UI.UserControl
    Property HtmlText() As String
        Get
            Return FCKeditor1.Value
        End Get
        Set(ByVal value As String)
            FCKeditor1.Value = value
        End Set
    End Property

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Me.FCKeditor1.CustomConfigurationsPath = ResolveUrl("~/htmleditor/mysetting.js")
        Me.FCKeditor1.FontNames = "宋体;黑体;隶书;楷体_GB2312;Arial;Comic Sans MS;Courier New;Tahoma;Times New Roman;Verdana"
        Me.FCKeditor1.FontSizes = "7pt;8pt;9pt;10pt;11pt;12pt;13pt;14pt;15pt;16pt;17pt"

    End Sub


    Private _height As Integer
    Public Property Height() As Integer
        Get
            Return _height
        End Get
        Set(ByVal value As Integer)
            _height = value
            FCKeditor1.Height = value
        End Set
    End Property



#Region "保存本地功能"

    '*******截取文章中图片保存本地***************
    ''' <summary>
    ''' html内容中的图片保存到本地
    ''' </summary>
    ''' <param name="cnt">要处理的文本</param>
    ''' <returns>已处理的html</returns>
    ''' <remarks></remarks>
    Public Function SaveImgToLocal(ByVal cnt As String) As String

        Dim u As String = Page.User.Identity.Name

        Dim dir As String = "~/UserFiles/" & u & "/remotesave/"

        If Not Directory.Exists(Server.MapPath(dir)) Then
            Directory.CreateDirectory(Server.MapPath(dir))
        End If

        Dim waithandlers() As System.Threading.WaitHandle

        Dim regstr As String = "<img.+?src\s*=\s*""(?<SRC>[^<""]*?)"".*?>"

        'Dim regstr As String = "<img.+?src\s*=\s*'(?<SRC>[^<']*?)'.*?>"

        'Dim regstr As String = "<img.+?src\s*=\s*(?<SRC>[^<\s]*?).*?>"

        'Dim regstr = "<img.+?src\s*=\s*""(?<SRC>[^<""]*?)"".*?>|<img.+?src\s*=\s*'(?<SRC>[^<']*?)'.*?>"

        Dim r As New Regex(regstr, RegexOptions.IgnoreCase Or RegexOptions.Singleline Or RegexOptions.RightToLeft)

        Dim m As MatchCollection = r.Matches(cnt)

        For i As Integer = 0 To m.Count - 1

            Dim oldurl As String = m(i).Groups("SRC").Value




            If ResolveUrl(oldurl).IndexOf(Request.Url.Host) = -1 And oldurl.Substring(0, 4).ToLower = "http" Then

                Dim newurl As String = dir & Guid.NewGuid().ToString() & Path.GetExtension(oldurl)

                Dim s As New degSaveImg(AddressOf SaveImg)

                Dim result As IAsyncResult = _
                    s.BeginInvoke(oldurl, newurl, Nothing, Nothing)

                If waithandlers Is Nothing Then
                    ReDim waithandlers(0)
                    waithandlers(waithandlers.Length - 1) = result.AsyncWaitHandle

                ElseIf waithandlers.Length < 64 Then
                    ReDim Preserve waithandlers(waithandlers.Length)
                    waithandlers(waithandlers.Length - 1) = result.AsyncWaitHandle

                Else
                    System.Threading.WaitHandle.WaitAll(waithandlers)
                    ReDim waithandlers(0)
                    waithandlers(waithandlers.Length - 1) = result.AsyncWaitHandle
                End If



                
                cnt = cnt.Replace(oldurl, ResolveUrl(newurl))
            End If
        Next

        If Not waithandlers Is Nothing AndAlso waithandlers.Length > 0 Then
            System.Threading.WaitHandle.WaitAll(waithandlers)
        End If

        Return cnt

    End Function
    Private Delegate Sub degSaveImg(ByVal oldurl As String, ByVal newurl As String)
    '******保存文件**************
    Private Sub SaveImg(ByVal oldurl As String, ByVal newurl As String)

        Try
            Dim req As System.Net.HttpWebRequest = System.Net.HttpWebRequest.Create(oldurl)
            Using rps As System.Net.HttpWebResponse = req.GetResponse()

                Using f As New System.IO.FileStream(Server.MapPath(newurl), IO.FileMode.Create, IO.FileAccess.Write)
                    Using netstream As System.IO.Stream = rps.GetResponseStream()

                        Dim l As Int16
                        Dim buff(1023) As Byte

                        l = netstream.Read(buff, 0, buff.Length)
                        While l > 0
                            f.Write(buff, 0, l)
                            l = netstream.Read(buff, 0, buff.Length)
                        End While
                    End Using
                End Using
            End Using


        Catch ex As Exception

        End Try


    End Sub
#End Region
End Class

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -