dubboのMultipartファイルアップロードの問題
8005 ワード
MultipartFileファイルをdubboで転送するとinvoke methodエラーが表示されます.dubboはこのオブジェクトをシステム間で転送できないため、Hessianを使用できます.
jettyパッケージでservlet-apiパッケージの依存を排除する必要があります.そうしないと、Tomcatが正常に起動しないとエラーが発生します.次にspringでインタフェースを露出します.
またdubboはシステムにまたがってストリームを伝達し、ストリームを空にします.最も簡単で効果的な方法は、ストリームをbyte配列に変換し、byte配列をストリームに変換します.すなわち、byteを仲介伝達します.
com.caucho
hessian
4.0.7
org.mortbay.jetty
jetty
6.1.26
org.mortbay.jetty
servlet-api
jettyパッケージでservlet-apiパッケージの依存を排除する必要があります.そうしないと、Tomcatが正常に起動しないとエラーが発生します.次にspringでインタフェースを露出します.
またdubboはシステムにまたがってストリームを伝達し、ストリームを空にします.最も簡単で効果的な方法は、ストリームをbyte配列に変換し、byte配列をストリームに変換します.すなわち、byteを仲介伝達します.
@RequestMapping("/pic/upload")
@ResponseBody
public PictureResult upload(@RequestParam MultipartFile uploadFile) throws IOException {
System.out.println(uploadFile.getSize());
byte[] pic = uploadFile.getBytes();
PictureResult result = pictureService.uploadPicture(pic, uploadFile);
return result;
}
@Override
public PictureResult uploadPicture(byte[] pic, MultipartFile uploadFile) {
if(pic == null || pic.length == 0) {
return PictureResult.error(" ");
}
String oldName = uploadFile.getOriginalFilename();
String newName = UUID.randomUUID() + oldName.substring(oldName.lastIndexOf("."));
String filePath = new DateTime().toString("/yyyy/MM/dd");
boolean res;
res = FtpUtils.uploadFile(FTP_ADDRESS, FTP_PORT, FTP_USER_NAME, FTP_PASSWORD,
FTP_BASE_PATH, filePath, newName, new ByteArrayInputStream(pic));
if(!res) {
return PictureResult.error(" ");
}
String url = FTP_BASE_PATH + filePath + "/" + newName;
return PictureResult.ok(url);
}