这是我的代码。
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;
}
结果
图像文件未正确显示。有什么问题?
答案 0 :(得分:0)
它需要原始图像的二进制数据。不应该是base64编码的。 bits
参数应仅为byte[]
。不要转换为String。
inputStream = new FileInputStream(file);
byte[] bits = IOUtils.toByteArray(inputStream);
希望您已使用org.apache.commons.io.IOUtils
- 在您的代码中wpUpFile
应该byte[] bits
。