📄 editorl.ascx.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 + -