2017-09-13 1 views
1

Ceci est mon code.Impossible de télécharger des fichiers multimédia WordPress à l'aide de 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); 
    } 

fichier base64 code de changement

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; 
    } 

résultat

enter image description here

Le fichier image n'a pas été affiché correctement. Quel est le problème?

Répondre

0

Il attend les données binaires de l'image brute. Ne devrait pas être codé en base64. Le paramètre bits doit être byte[] uniquement. Ne pas convertir en chaîne.

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

espère que vous utilisez déjà org.apache.commons.io.IOUtils - dans votre code wpUpFile devrait juste être byte[] bits.