dubboのMultipartファイルアップロードの問題

8005 ワード

MultipartFileファイルをdubboで転送するとinvoke methodエラーが表示されます.dubboはこのオブジェクトをシステム間で転送できないため、Hessianを使用できます.
		 
            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);
	}