通用微博图片上传类
'*********************************************************************************** '***本程序可以自由传播,本人不对您使用本软件及代码造成的任何后果承担任何责任** '***利用此代码挣钱了也无需告诉我****** '***作者:龙小龙 QQ:31519488,部分代码来源于网络*** '***感谢中国农业人才网www.5ajob.com 大力支持*** '***中国农业人才网,让伯乐与千里马不再是偶遇*** '*********************************************************************************** ''' VB文件上传类,可以同时传多个文件 文字内容,也可以从网页上抓图片再上传 Public c_strDestURL As String Public c_strFileName As String Public c_strFieldName As String Public c_strBoundary As String Public c_strContentType As String ' text/plain or image/pjpeg and so on "application/upload" text/plain Public c_param As Dictionary '格式key->字段名 value->类型|属性|内容 '字段名 类型|属性|内容 '类型 目前有txt = 0 '文本pic = 1 '图片File = 2 '文件 URL = 3 '网址 '属性是类型下的属性 比如pic 下的属性就是文件格式pic jpg png等 'With c_param '.add "pic", "url|pic|http://www.xx.com/1.jpg" '.add "pic1", "pic|jpg|C:\Documents and Settings\Administrator\桌面\1.jpg" '.add "status", "txt|raw|大家好y" '.add "txtfile", "file|txt|C:\Documents and Settings\Administrator\桌面\1.txt" 'End With Public c_strResponseText As String Public c_boolPrepared As Boolean Public c_strErrMsg As String Private Type Field s_FieldName As String '字段名 s_FieldValue As String '字段值 s_FieldType As String '字段类型 s_FieldPro As String '字段属性 s_FieldCon As String '字段内容 End Type 'Private Enum FieldType 'txt = 0 '文本 'pic = 1 '图片 'File = 2 '文件 'URL = 3 '网址 'End Enum Public Sub Class_Initialize() c_strDestURL = "" c_strFileName = "" c_strContentType = "application/upload" c_strFieldName = "file" c_strBoundary = "---------------------------" & LCase(c10ton(Right("0" & Day(Date), 2) & Right("0" & Hour(Time), 2) & Right("0" & Minute(Time), 2) & Right("0" & Second(Time), 2), 16)) c_boolPrepared = False End Sub Public Sub Class_Terminate() End Sub ''' 公共调用函数,文件上传 Public Function vbsUpload() Call CheckRequirements If c_boolPrepared Then UploadFile c_strDestURL, c_param Else ' c_strErrMsg End If End Function ''' 检查程序工作环境 Private Function CheckRequirements() On Error Resume Next CreateObject ("MSXML2.XMLHTTP") If Not Err = 0 Then c_strErrMsg = c_strErrMsg & vbCrLf & Err.Descriptiof Else c_boolPrepared = True End If End Function ''' 文件上传 Private Function UploadFile(ByVal DestURL As String, ByVal param As Dictionary) Boundary = c_strBoundary bFormData = BuildFormData(Boundary, param) ' Debug.Print rsBinarytoString(bFormData) WinHTTPPostRequest DestURL, bFormData, Boundary End Function ''' WinHTTPPostRequest Private Function WinHTTPPostRequest(URL, FormData, Boundary) Dim xmlhttp Set xmlhttp = CreateObject("MSXML2.XMLHTTP") On Error Resume Next xmlhttp.open "POST", URL, False xmlhttp.setRequestHeader "Content-Type", "multipart/form-data; boundary=" + Boundary xmlhttp.send FormData c_strResponseText = xmlhttp.responseText ' 服务端返回信息 Set xmlhttp = Nothing End Function '''组合上传数据包 multipart/form-data document Header + Content Private Function BuildFormData(ByVal Boundary As String, ByVal param As Dictionary) Dim FileContents() As Byte, FormData() As Byte Dim Pre As String Dim Po As String ' Boundary = c_strBoundary Const adlongvarbinary = 205 Dim rs: Set rs = CreateObject("ADODB.Recordset") rs.Fields.Append "b", adlongvarbinary, 100 rs.open rs.AddNew Pre = "--" '+ Boundary + vbCrLf ' Debug.Print Pre; FormData = SaveStringToByteArry(Pre) rs("b").AppendChunk (FormData) Dim i As Integer, t As Integer Dim tempstr As String, FieldVaue As String For i = 0 To param.Count - 1 two = IIf(t > 0, vbCrLf & "--", "") '如果有1个以上的字段,中间的就要多2个--,很关键,否则只能传成功1个文件. Dim sField As Field, aFieldVaue With sField .s_FieldName = param.Keys(i) .s_FieldValue = param.Items(i) If InStr(.s_FieldValue, "|") = 0 Then .s_FieldValue = "txt|raw|" & .s_FieldValue End If aFieldVaue = Split(.s_FieldValue, "|") .s_FieldType = aFieldVaue(0) .s_FieldPro = aFieldVaue(1) .s_FieldCon = aFieldVaue(2) ' MsgBox .s_FieldName Select Case LCase(.s_FieldType) Case "txt" ' Select Case LCase(.s_FieldPro) ' Case "raw" ' .s_FieldCon = UTF8Encode(.s_FieldCon) ' Case Else ' End Select tempstr = txtFields(.s_FieldName, two & Boundary) FormData = SaveStringToByteArry(tempstr) '二进制头 rs("b").AppendChunk (FormData) FormData = stream_StringtoBinary(.s_FieldCon, "UTF-8") rs("b").AppendChunk (FormData) tempstr = vbCrLf '后面有个回车 FormData = SaveStringToByteArry(tempstr) '二进制头 rs("b").AppendChunk (FormData) Case "pic", "file" FileContents = GetFile(.s_FieldCon) ' 二进制文件内容 Select Case LCase(.s_FieldPro) Case "gif" ContentType = "image/gif" Case "jpg" ContentType = "image/pjpeg" Case "png" ContentType = "image/x-png" Case "txt" ContentType = "application/upload" Case Else ContentType = "image/unknow" End Select tempstr = mpFields(.s_FieldName, .s_FieldCon, ContentType, two & Boundary) FormData = SaveStringToByteArry(tempstr) '二进制文件头 rs("b").AppendChunk (FormData) rs("b").AppendChunk (FileContents) '二进制文件本身 Case "url" '抓取网页上的图片 If SaveRemoteFile2Bin(.s_FieldCon, FileContents) = True Then ContentType = "image/unknow" tempstr = mpFields(.s_FieldName, .s_FieldCon, ContentType, two & Boundary) FormData = SaveStringToByteArry(tempstr) '二进制文件头 rs("b").AppendChunk (FormData) rs("b").AppendChunk (FileContents) '二进制文件本身 End If End Select End With t = t + 1 Next Po = vbCrLf + "--" + Boundary + "--" + vbCrLf ' FormData = SaveStringToByteArry(Po) rs("b").AppendChunk (FormData) rs.Update BuildFormData = rs("b") rs.Close End Function 'Converts OLE string To multibyte string Private Function StringToMB(ByVal sCon As String) Dim i, tempstr For i = 1 To Len(sCon) tempstr = tempstr & ChrB(Asc(Mid(sCon, i, 1))) Next StringToMB = tempstr End Function ''' 组织HTTP头 Private Function mpFields(ByVal FieldName As String, ByVal FileName As String, ByVal ContentType As String, ByVal Boundary As String) Dim MPTemplate 'template For multipart header MPTemplate = "{boundary}" + vbCrLf + "Content-Disposition: form-data; name=""{field}"";" + _ " filename=""{file}""" + vbCrLf + _ "Content-Type: {ct}" + vbCrLf + vbCrLf Dim Out Out = Replace(MPTemplate, "{field}", FieldName) Out = Replace(Out, "{file}", FileName) Out = Replace(Out, "{boundary}", Boundary) mpFields = Replace(Out, "{ct}", ContentType) End Function Private Function txtFields(ByVal FieldName As String, ByVal Boundary As String) txtContentTemplate = "{boundary}" + vbCrLf + "Content-Disposition: form-data; name=""{0}""" + vbCrLf + vbCrLf Dim Out Out = Replace(txtContentTemplate, "{0}", FieldName) Out = Replace(Out, "{boundary}", Boundary) txtFields = Out End Function ''' 二进制载入文件内容 Private Function GetFile(ByVal FileName As String) Dim Stream: Set Stream = CreateObject("ADODB.Stream") Stream.Type = 1 'Binary Stream.open Stream.LoadFromFile FileName GetFile = Stream.Read Stream.Close End Function Function SaveRemoteFile2Bin(ByVal RemoteFileUrl As String, ByRef RemoteFileCon() As Byte) As Boolean ' 保存远程文件 On Error Resume Next Dim ARetrieval, GetRemoteData Set Retrieval = CreateObject("MSXML2.XMLHTTP") With Retrieval .open "Get", RemoteFileUrl, False, "", "" .send RemoteFileCon = .responseBody SaveRemoteFile2Bin = True End With If Err.Number <> 0 Then Err.Clear SaveRemoteFile2Bin = False Exit Function End If Set Retrieval = Nothing End Function
相关推荐
用户可以编写文字、上传图片、视频,甚至嵌入链接,形成一条微博。源代码中,这部分涉及到文本编辑器的实现、多媒体文件的上传和处理(如图片压缩、视频转码)、以及富文本的显示。这些功能通常由前后端协作完成,...
开发者可以通过调用SDK提供的API,实现在应用内发起微博发布、图片上传、链接分享等操作,并且能够处理用户的登录授权,确保安全。 其次,`iOS_OpenSDK_2.9.0.91_all.zip` 文件可能是腾讯QQ的开放平台SDK的一个版本...
9. **下载功能(down.asp)**:可能提供了文件下载功能,比如用户上传的图片或其他附件,其他用户可以通过此接口下载。 10. **错误处理(die.asp)**:当系统遇到错误时,该文件可能用于处理异常并展示相应的错误...
大猫通用图床图片备份、下载、搬迁工具简介 一些站长对于文章的图片,要么是使用了一些免费的图床,要么是自己重新租用了服务器专门放置图片,也有些站长是将图片放到类似新浪微博那种说不定什么时候就不提供外链的...
这种类型的系统通常用于实现基本的社交媒体功能,如发布微博、转发、回复、上传图片以及分享链接等。 在ASP编程中,这些功能通常通过一系列的ASP文件来实现,每个文件对应特定的功能模块: 1. **mfunc.asp**:这...
同时,用户在UCHOME上的活动,如发表日志、上传图片、参与讨论等,都可以同步到关联的社交账户,扩大了信息的传播范围,提升了社区的活跃度。 其次,插件支持GBK和UTF8两种编码格式,这极大地拓宽了其适用范围。GBK...
- **多图功能**:支持用户一次性上传多张图片,适用于PC和移动平台。 - **第三方应用接入**: - 首次在移动端实现第三方应用接入,用户可通过“附件”按钮选择插入来自其他应用的内容(如话题、图片、音乐等)。 -...
大猫通用图床图片备份、下载、搬迁工具简介一些站长对于文章的图片,要么是使用了一些免费的图床,要么是自己重新租用了服务器专门放置图片,也有些站长是将图片放到类似新浪微博那种说不定什么时候就不提供外链的...
6. **图片上传**:如果要发送图文微博,还需先将本地图片上传到新浪的图床,获得图片的URL。同样通过易语言的网络模块和API接口完成这一过程,获取到的图片URL再作为参数添加到微博内容中。 7. **错误处理**:在...
论坛上传图片增加到原图链接 在论坛附件中增加带进度条的上传功能 在编辑器中增加带进度条的上传功能 后台配置增加上传文件和图片的大小限制 用户空间首页加入微博发布框 配合ajaxLoader/frmLoader,门户区块...
修正内容图片上传问题 去除user全文索引 调整notice目录结构 更新默认图片 更新直播名格式化 更新微博分享链接 文章单页等增加SEO关键字 专题增加封面上传 优化router扫描规则 升级layui至v2.7.6 增加
4、操作简单:采集发布一体化设计,一键转载文字、图片、附件,自动下载/上传图片和附件; 5、智能化、交互性强:支持自动登录被采集网站论坛,自动签到,自动回复主题帖,自动购买主题帖; 6、灵活、扩展方便:...
7. **库文件和类**:封装通用功能,如邮件发送、图片处理等。 8. **数据库文件**:SQL脚本或数据文件,用于创建和填充数据库。 9. **图片和其他媒体文件**:用户上传的头像、微博中的图片等。 10. **文档**:安装...
5.发布文章上传图片需设置为特色图片,缩略图中等尺寸值建议为最大宽度193,最大高度20048,小缩略图尺寸值建议为75x75(在后台的 设置-媒体-图像大小 里修改) 6.关闭后台评论嵌套功能(在后台的 设置-讨论-启用...
2、修正编辑器中上传图片问题。 3、修正相册插件上传问题。 4、修正友情链接插件验证码问题。 其他一些修改... 安装Gblog 1.从下载页面下载Gblog最新版本安装包。 2.解压安装包,上传包内文件至服务器。 3....
用户在编辑文章时,可以通过内置的图片上传功能,将本地图片插入到内容中,提高文章的可读性和吸引力。这些图片可能会被上传到服务器,或者使用Base64编码嵌入到HTML中,以适应不同的使用场景。 `editor`可能是一个...
wojilu Log一个轻量级 Json 解析器一个简易的前端 Ajax 库(弹窗、局部刷新、验证、上传等)2. 我记录网站综合系统 2.0名称: 我记录网站综合系统 2.0网址: http://www.wojilu.com下载: 请到论坛置顶帖子中下载。...
b) 文章支持主题图片及在线图片剪裁,作品案例模块支持缩略图,加快页面加载速度。 c) 支持简单的会员模块,具有相应的留言评论、下载、上传、注册、密保权限和会员反馈、VIP资源共享系统。会员支持超级管理员权限...
b) 文章支持主题图片及在线图片剪裁,作品案例模块支持缩略图,加快页面加载速度。 c) 支持简单的会员模块,具有相应的留言评论、下载、上传、注册、密保权限和会员反馈、VIP资源共享系统。会员支持超级管理员权限...
b) 文章支持主题图片及在线图片剪裁,作品案例模块支持缩略图,加快页面加载速度。 c) 支持简单的会员模块,具有相应的留言评论、下载、上传、注册、密保权限和会员反馈、VIP资源共享系统。会员支持超级管理员权限...