2017-09-13 169 views
1

這是我的代碼。無法使用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

沒有正確顯示圖像文件。問題是什麼?

回答

0

它期望原始圖像的二進制數據。不應該被base64編碼。 bits參數應該只有byte[]。不要轉換爲字符串。

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

希望你已經使用org.apache.commons.io.IOUtils - 在你的代碼wpUpFile應該只是byte[] bits

相關問題