Continuando con nuestra serie de posts acerca de cómo publicar en WordPress desde una aplicación local en Microsoft Access, en esta segunda oportunidad veremos cómo subir una foto a la librería de medios de WordPress.
Si aún no viste la parte 1, te recomiendo que la leas en este enlace.
El código
Sub PublicarMedioEnWordPress()
' Datos de Autenticación
txtURL = SITIO
txtUserName = USUARIO
txtPassword = PASSWORD
' Datos del Medio
txtArchivo = "Desert.jpg"
txtTipo = "image/jpeg"
Dim txtImagen As String
txtImagen = "C:\Users\Public\Pictures\Sample Pictures\Desert.jpg"
' ServerXMLHTTP
Dim objSvrHTTP As ServerXMLHTTP
Dim strT As String
Set objSvrHTTP = New ServerXMLHTTP
' Autenticación
objSvrHTTP.Open "POST", txtURL, False, CStr(txtUsuario), CStr(txtPassword)
objSvrHTTP.setRequestHeader "Accept", "application/xml"
objSvrHTTP.setRequestHeader "Content-Type", "application/xml"
strT = strT & "<methodCall>"
' Acción
strT = strT & "<methodName>metaWeblog.newMediaObject</methodName>"
' General
strT = strT & "<params>"
strT = strT & "<param><value><string>0</string></value></param>"
strT = strT & "<param><value>" & txtUserName & "</value></param>"
strT = strT & "<param><value><string>" & txtPassword & "</string></value></param>"
strT = strT & "<param>"
strT = strT & "<struct>"
' Nombre, Tipo e Imagen
strT = strT & "<member><name>name</name><value><![CDATA[" & txtArchivo & "]]></value></member>"
strT = strT & "<member><name>type</name><value><![CDATA[" & txtTipo & "]]></value></member>"
strT = strT & "<member><name>bits</name><value><base64>" & EncodeFile(txtImagen) & "</base64></value></member>"
strT = strT & "</struct>"
strT = strT & "</param>"
strT = strT & "</params>"
strT = strT & "</methodCall>"
' Publicación
objSvrHTTP.send strT
' Debug
Debug.Print objSvrHTTP.responseText
MsgBox objSvrHTTP.responseText
End Sub
Public Function EncodeFile(strPicPath As String) As String
Const adTypeBinary = 1 ' Binary file is encoded
' Variables for encoding
Dim objXML
Dim objDocElem
' Variable for reading binary picture
Dim objStream
' Open data stream from picture
Set objStream = CreateObject("ADODB.Stream")
objStream.Type = adTypeBinary
objStream.Open
objStream.LoadFromFile (strPicPath)
' Create XML Document object and root node
' that will contain the data
Set objXML = CreateObject("MSXml2.DOMDocument")
Set objDocElem = objXML.createElement("Base64Data")
objDocElem.DataType = "bin.base64"
' Set binary value
objDocElem.nodeTypedValue = objStream.Read()
' Get base64 value
EncodeFile = objDocElem.Text
' Clean all
Set objXML = Nothing
Set objDocElem = Nothing
Set objStream = Nothing
End Function
El resultado
El XML retornado por WordPress:
Bibliografía
No hay comentarios:
Publicar un comentario