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

问题描述:

这是我的代码。无法使用XML-RPC上传WordPress媒体文件

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

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

它期望原始图像的二进制数据。不应该被base64编码。 bits参数应该只有byte[]。不要转换为字符串。

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

希望你已经使用org.apache.commons.io.IOUtils - 在你的代码wpUpFile应该只是byte[] bits