无法使用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;
}
结果
没有正确显示图像文件。问题是什么?
答
它期望原始图像的二进制数据。不应该被base64编码。 bits
参数应该只有byte[]
。不要转换为字符串。
inputStream = new FileInputStream(file);
byte[] bits = IOUtils.toByteArray(inputStream);
希望你已经使用org.apache.commons.io.IOUtils
- 在你的代码wpUpFile
应该只是byte[] bits
。