2017-09-13 1 views
1

Dies ist mein Code.Fehler beim Hochladen von WordPress-Mediendateien mit 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); 
    } 

Datei Code base64 Änderung

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

Ergebnis

enter image description here

Die Bilddatei nicht korrekt angezeigt wurde. Was ist das Problem?

Antwort

0

Erwartet Binärdaten des Rohbildes. Sollte nicht Base64-codiert sein. bits Parameter sollte nur byte[] sein. Nicht in String konvertieren.

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

Hoffnung, die Sie bereits org.apache.commons.io.IOUtils verwenden - im Code wpUpFile nur byte[] bits sein sollte.

Verwandte Themen