无法使用XML-RPC上载WordPress媒体文件

时间:2017-09-13 00:55:05

标签: java wordpress spring jsp xml-rpc

这是我的代码。

    public void fileUpload() throws Exception {
         byte fileByte[] =org.apache.commons.io.FileUtils.readFileToByteArray(new File(path+realName));
                String wpUpFile=fileToString(new File(path+realName));
                XmlRpcClient blog  = new XmlRpcClient();
                XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();
                Hashtable<String, String> post = new Hashtable<>();
                Vector<Serializable> params = new Vector<Serializable>();
                config.setServerURL(url);
                config.setBasicUserName(user);
                config.setBasicPassword(pw);
                params.addElement(id);
                params.addElement(user);
                params.addElement(pw);
                post.put("name", realName);
                post.put("type", "image/jpeg");
                post.put("bits", wpUpFile);
                post.put("overwrite", "false");
                params.addElement(post);
                params.addElement(true);
                Object blogPostID = blog.execute(config, "wp.uploadFile", params);
    }

文件base64更改代码

 public String fileToString(File file) throws IOException {
                String fileString = new String();
                FileInputStream inputStream =  null;
                ByteArrayOutputStream byteOutStream = null;
                try {
                    inputStream = new FileInputStream(file);
                    byteOutStream = new ByteArrayOutputStream();
                    int len = 0;
                    byte[] buf = new byte[1024];
                        while ((len = inputStream.read(buf)) != -1) {
                             byteOutStream.write(buf, 0, len);
                    }
                    byte[] fileArray = byteOutStream.toByteArray();
                    fileString = new String(Base64.encodeBase64(fileArray));
                } catch (IOException e) {
                    e.printStackTrace();
                } finally {
                    inputStream.close();
                    byteOutStream.close();
                }
               return fileString;
    }

结果

enter image description here

图像文件未正确显示。有什么问题?

1 个答案:

答案 0 :(得分:0)

它需要原始图像的二进制数据。不应该是base64编码的。 bits参数应仅为byte[]。不要转换为String。

inputStream = new FileInputStream(file);
byte[] bits = IOUtils.toByteArray(inputStream);

希望您已使用org.apache.commons.io.IOUtils - 在您的代码中wpUpFile应该byte[] bits