WordPress无法通过c#使用wp.uploadFile上传图片

3
我正在开发一个使用xml-rpc.net与Wordpress通信的.Net程序。我发现,如果我尝试通过"wp.uploadFile"上传一张较大的图片,Wordpress会返回一个错误,指出"parse error(-32700),格式不正确"。我尝试使用Windows Live Write写一篇文章。然而,如果我选择链接源图片,就会出现一个错误,指出我无法上传图片,并建议通过ftp上传图片。
我找到了这篇文章: 图片上传失败
我认为可能仍存在读取大请求时缺少换行符的问题,因此我自己构建了xml,根据RFC 822在每76个字符处添加了一个换行符('\r\n')。但问题仍存在,换句话说,我无法上传任何较大的图片。 我的xml文件如下:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<methodCall>
  <methodName>wp.uploadFile</methodName>
  <params>
    <param>
      <value>
        <i4>0</i4>
      </value>
    </param>
    <param>
      <value>
        <string>myname</string>
      </value>
    </param>
    <param>
      <value>
        <string>mypwd</string>
      </value>
    </param>
    <param>
      <value>
        <struct>
          <member>
            <name>name</name>
            <value>
              <string>MS-wedge.jpg</string>
            </value>
          </member>
          <member>
            <name>type</name>
            <value>
              <string>image/jpeg</string>
            </value>
          </member>
          <member>
            <name>bits</name>
            <value>
              <base64>
/9j/4AAQSkZJRgABAQEBLAEsAAD7gAOQWRvYmUAZAAAAAAB+EVpkV4aWYAAE1NACoAAAAIABAB
AAADAAAAARIAAAABAQADAAAAAQwAAAABAgADAAAAAwAAAM4BBgADAAAAAQACAAABDwACAAAAEgAA
<!-- ... pending other data -->
</base64>
            </value>
          </member>
          <member>
            <name>overwrite</name>
            <value>
              <boolean>false</boolean>
            </value>
          </member>
        </struct>
      </value>
    </param>
  </params>
</methodCall>
1个回答

1
我已经使用WordPress XML-RPC工作了三年多。我附上一个上传请求示例,可以作为您的参考。希望这能帮到您。
<?xml version="1.0"?>
    <methodCall><methodName>wp.uploadFile</methodName>
        <params>
            <param>
                <value><string>1</string></value>
            </param>
        <param>
                <value><string>username</string></value>
        </param>
        <param>
                <value><string>password</string></value>
        </param>
        <param>
                <value><struct>
                    <member>
                        <name>name</name>
                        <value><string>Photo Jun 27, 2013, 3:08 PM.jpg</string></value>
                    </member>
                    <member><name>type</name><value><string>image/jpeg</string></value>
                    </member>
                    <member><name>bits</name><value><base64>/9j/4AAQSkZJRgABAQAAAQABAAD/4QBYRXhpZgAATU0AKgAAAAgAAgESAAMAAAABAAEAAIdpAAQA
<!-- ... pending other data -->
</base64></value></member>
                    <member><name>overwrite</name><value><string>false</string></value></member></struct></value></param></params></methodCall>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接