`
jljxj
  • 浏览: 6031 次
  • 性别: Icon_minigender_1
  • 来自: 南京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

通用微博图片上传类

阅读更多
'***********************************************************************************
'***本程序可以自由传播,本人不对您使用本软件及代码造成的任何后果承担任何责任**
'***利用此代码挣钱了也无需告诉我******
'***作者:龙小龙 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

 

分享到:
评论

相关推荐

    YOLOv12:以注意力为中心的实时目标检测器.pdf

    YOLOv12:以注意力为中心的实时目标检测器

    GO语言基础语法指令教程

    GO语言基础语法指令教程

    MATLAB代码实现:分布式电源接入对配电网运行影响深度分析与评估,MATLAB代码分析:分布式电源接入对配电网运行影响评估,MATLAB代码:分布式电源接入对配电网影响分析 关键词:分布式电源 配电

    MATLAB代码实现:分布式电源接入对配电网运行影响深度分析与评估,MATLAB代码分析:分布式电源接入对配电网运行影响评估,MATLAB代码:分布式电源接入对配电网影响分析 关键词:分布式电源 配电网 评估 参考文档:《自写文档,联系我看》参考选址定容模型部分; 仿真平台:MATLAB 主要内容:代码主要做的是分布式电源接入场景下对配电网运行影响的分析,其中,可以自己设置分布式电源接入配电网的位置,接入配电网的有功功率以及无功功率的大小,通过牛顿拉夫逊法求解分布式电源接入后的电网潮流,从而评价分布式电源接入前后的电压、线路潮流等参数是否发生变化,评估配电网的运行方式。 代码非常精品,是研究含分布式电源接入的电网潮流计算的必备程序 ,分布式电源; 配电网; 接入影响分析; 潮流计算; 牛顿拉夫逊法; 电压评估; 必备程序。,基于MATLAB的分布式电源对配电网影响评估系统

    三相光伏并网逆变器:Mppt最大功率跟踪与800V中间母线电压的电力转换技术,三相光伏并网逆变器:实现最大功率跟踪与800V中间母线电压的优化处理,三相光伏并网逆变器 输入光伏Mppt 最大功率跟踪

    三相光伏并网逆变器:Mppt最大功率跟踪与800V中间母线电压的电力转换技术,三相光伏并网逆变器:实现最大功率跟踪与800V中间母线电压的优化处理,三相光伏并网逆变器 输入光伏Mppt 最大功率跟踪中间母线电压800V 后级三相光伏并网逆变器 ,三相光伏并网逆变器; 输入光伏Mppt; 最大功率跟踪; 中间母线电压800V; 后级逆变器,三相光伏并网逆变器:MPPT最大功率跟踪800V母线电压

    基于SSM的车位销售平台设计与实现.zip(毕设&课设&实训&大作业&竞赛&项目)

    项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用

    西门子博途三部十层电梯程序案例解析:基于Wincc RT Professional V14及更高版本的应用探索,西门子博途三部十层电梯程序案例解析:基于Wincc RT Professional画面与

    西门子博途三部十层电梯程序案例解析:基于Wincc RT Professional V14及更高版本的应用探索,西门子博途三部十层电梯程序案例解析:基于Wincc RT Professional画面与V14及以上版本技术参考,西门子1200博途三部十层电梯程序案例,加Wincc RT Professional画面三部十层电梯程序,版本V14及以上。 程序仅限于参考资料使用。 ,西门子;1200博途;三部十层电梯程序案例;Wincc RT Professional;V14以上程序版本。,西门子V14+博途三部十层电梯程序案例:Wincc RT Pro专业画面技术解析

    基于舆情数据的知识图谱推荐可视化系统论文,全原创,免费分享

    基于舆情数据的知识图谱推荐可视化系统论文,全原创,免费分享

    基于Vivado源码的AM包络检调制解调与FIR滤波器设计在FPGA上的实现,基于Zynq-7000和Artix-7系列的AM包络检调制解调源码及Vivado环境下的实现,AM包络检调制解调,Viva

    基于Vivado源码的AM包络检调制解调与FIR滤波器设计在FPGA上的实现,基于Zynq-7000和Artix-7系列的AM包络检调制解调源码及Vivado环境下的实现,AM包络检调制解调,Vivado源码 FPGA的AM调制解调源码,其中FIR滤波器根据MATLAB设计。 【AM_jietiao】文件是基于zynq-7000系列,但没有涉及AD与DA,只是单纯的仿真。 【AM包络检调制解调_Vivado源码】文件基于Artix-7系列,从AD读入信号后,进行AM调制,并解调DA输出。 ,AM包络检调制解调;Vivado源码;FPGA;AM调制解调源码;FIR滤波器;MATLAB设计;Zynq-7000系列;Artix-7系列;AD读入信号;DA输出,AM包络调制解调源码:Zynq-7000与Artix-7 FPGA的不同实现

    rdtyfv、ijij

    yugy

    2025山东大学:DeepSeek应用与部署(部署方案大全+API调用+业务应用)-80页.pptx

    2025山东大学:DeepSeek应用与部署(部署方案大全+API调用+业务应用)-80页.pptx

    chromedriver-mac-x64-135.0.7023.0(Dev).zip

    chromedriver-mac-x64-135.0.7023.0(Dev).zip

    基于单片机protues仿真的433MHz无线模块编解码收发通信测试(仿真图、源代码)

    基于单片机protues仿真的433MHz无线模块编解码收发通信测试(仿真图、源代码) 该设计为单片机protues仿真的433MHz无线模块收发通信测试; 1、433M超再生收发模块; 2、在仿真图中是把发射MCU的P2_7腿直接输入到接收MCU的INT0实现编码解码的; 3、通过433MHz无线模块实现无线通信的编解码功能; 4、按键控制指令; 5、液晶屏显示收发状态和信息;

    车机安卓版好用的应用管理app

    资源说说明; 自带文件管理 adb操作以及应用管理等等的功能。 操作性对比其他应用较好。 参阅博文: https://blog.csdn.net/mg668/article/details/145689511?spm=1001.2014.3001.5352

    软件工程课程设计前端.zip

    项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用

    智慧图书管理系统(源码+数据库+论文)java开发springboot框架javaweb,可做计算机毕业设计或课程设计

    智慧图书管理系统(源码+数据库+论文)java开发springboot框架javaweb,可做计算机毕业设计或课程设计 【功能需求】 本系统分为读者、管理员2个角色 读者可以进行注册登录、浏览图书以及留言、图书借阅、图书归还、图书续借、个人中心、论坛交流、等功能 管理员可以进行读者管理、图书管理、论坛论坛回复管理、图书借阅管理(下架、库存管理、修改、删除)、轮播图管理 【环境需要】 1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。 3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可 4.数据库:MySql 5.7/8.0等版本均可; 【购买须知】 本源码项目经过严格的调试,项目已确保无误,可直接用于课程实训或毕业设计提交。里面都有配套的运行环境软件,讲解视频,部署视频教程,一应俱全,可以自己按照教程导入运行。附有论文参考,使学习者能够快速掌握系统设计和实现的核心技术。

    三相APFC电路与单相Boost PFC电路仿真模型:电压外环电流内环双闭环控制研究,三相电路仿真模型:探索APFC电路、单相PFC电路及BoostPFC电路的动态特性与双闭环控制策略,APFC电路

    三相APFC电路与单相Boost PFC电路仿真模型:电压外环电流内环双闭环控制研究,三相电路仿真模型:探索APFC电路、单相PFC电路及BoostPFC电路的动态特性与双闭环控制策略,APFC电路,单相PFC电路,单相BoostPFC电路仿真模型。 网侧220V 50Hz,输出电压设置为50Hz。 电压外环电流内环双闭环控制仿真模型 ,APFC电路; 单相PFC电路; 单相BoostPFC电路仿真模型; 网侧电压; 220V 50Hz; 输出电压50Hz; 电压外环电流内环双闭环控制仿真模型。,基于APFC电路的单相Boost PFC仿真模型:网侧电压220V/50Hz下电压电流双闭环控制的研究与应用

    MATLAB环境下ADMM算法在分布式调度中的应用:比较并行与串行算法(Jocobi与Gaussian Seidel)的优化效果与实现细节-基于YALMIP和GUROBI的仿真平台复刻参考文档的研究

    MATLAB环境下ADMM算法在分布式调度中的应用:比较并行与串行算法(Jocobi与Gaussian Seidel)的优化效果与实现细节——基于YALMIP和GUROBI的仿真平台复刻参考文档的研究结果。,MATLAB下ADMM算法在分布式调度中的并行与串行算法应用:基于YALMIP与GUROBI的仿真研究,MATLAB代码:ADMM算法在分布式调度中的应用 关键词:并行算法(Jocobi)和串行算法(Gaussian Seidel, GS) 参考文档:《主动配电网分布式无功优化控制方法》《基于串行和并行ADMM算法的电-气能量流分布式协同优化》 仿真平台:MATLAB YALMIP GUROBI 主要内容:ADMM算法在分布式调度中的应用 复刻参考文档 ,关键词:ADMM算法; 分布式调度; 并行算法(Jocobi); 串行算法(Gaussian Seidel, GS); MATLAB代码; YALMIP; GUROBI; 主动配电网; 无功优化控制方法; 能量流分布式协同优化。,MATLAB实现:ADMM算法在分布式调度中的并行与串行优化应用

    “考虑P2G、碳捕集与碳交易机制的综合能源系统优化调度模型研究”,考虑电转气P2G与碳捕集设备的热电联供综合能源系统优化调度模型研究(含碳交易机制与四种算例场景分析),考虑P2G和碳捕集设备的热电联供

    “考虑P2G、碳捕集与碳交易机制的综合能源系统优化调度模型研究”,考虑电转气P2G与碳捕集设备的热电联供综合能源系统优化调度模型研究(含碳交易机制与四种算例场景分析),考虑P2G和碳捕集设备的热电联供综合能源系统优化调度模型 摘要:代码主要做的是一个考虑电转气P2G和碳捕集设备的热电联供综合能源系统优化调度模型,模型耦合CHP热电联产单元、电转气单元以及碳捕集单元,并重点考虑了碳交易机制,建立了综合能源系统运行优化模型,与目前市面上的代码不同,本代码完全复现了文档中所提出的四种算例场景,没有对比算例,买过去也没有任何意义,四种算例主要包括: 1)t不包括P2G、CCS、以及碳交易 2)t包括P2G,但是不包括CCS以及碳交易 3)t包括P2G和CCS,但是不包括碳交易 4)t包括P2G、CCS以及碳交易 且最终的实现效果与文档进行对比后,虽然数值无法100%一致,但是结果以及数值曲线,几乎完全一样,此版本为目前市面上最好的园区综合能源调度代码,没有之一 ,考虑电转气(P2G); 碳捕集设备; 热电联供综合能源系统; 优化调度模型; 碳交易机制; CHP热电联产单元; 耦合模型; 算

    FS-LDM培训材料(DAY_2)_NCR数据仓库事业部.ppt

    FS-LDM培训材料(DAY_2)_NCR数据仓库事业部.ppt

    专题 平面向量的数量积(学生版)20250222.pdf

    专题 平面向量的数量积(学生版)20250222.pdf

Global site tag (gtag.js) - Google Analytics