1
에 이미지 파일을 저장하면 내가 성공적으로이 코드와 데이터 저장소에 BLOB에 이미지를 저장 :GAE + 스프링 MVC : Blob 저장소
@RequestMapping(value = "/add", method = RequestMethod.POST)
public String add(ModelMap model, Product form, HttpServletRequest request) {
if(ServletFileUpload.isMultipartContent(request)) { // if(form.getImage().getBytes().getSize() != 0) {
try {
Blob file = new Blob(form.getImage().getBytes());
form.setImg(file);
} catch (IOException e) {
e.printStackTrace();
}
}
//save to datastore etc
}
그리고 난 그냥 Blob 저장소에 저장하려고 그냥 데이터 저장소에 물방울 키를 저장 . 그것은 가능합니까? 내가 this 예를 배울
@RequestMapping(value = "/add", method = RequestMethod.POST)
public String add(ModelMap model, Product form, HttpServletRequest request) {
Map<String, BlobKey> blobs = blobstoreService.getUploadedBlobs(request);
BlobKey blobKey = blobs.get("image");
form.setImage1(blobKey);
//save to datastore etc
}
이 내 조각하지만 작품이다.
Must be called from a blob upload callback request.
스택 추적 : 그리고 난이 오류가 발생했습니다
java.lang.IllegalStateException: Must be called from a blob upload callback request.
at com.google.appengine.api.blobstore.BlobstoreServiceImpl.getUploads(BlobstoreServiceImpl.java:160)
at com.google.appengine.api.blobstore.BlobstoreServiceImpl.getUploadedBlobs(BlobstoreServiceImpl.java:144)
at com.shop.controller.ProductController.add(ProductController.java:92)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
....
솔루션 :
<form:form action='<%=blobstoreService.createUploadUrl("/admin/product/add")%>' commandName="product" methodParam="POST" enctype="multipart/form-data">
:
마지막으로 내가 내 JSP에서 URL을 생성 할 필요가 그것을 발견 012 브로커를 저장하는 대신
감사 BlobKey 인스턴스를 다시 구성 할 수 있지만,이 오류가 발생이 줄 '지도 <문자열, BlobKey> 모양 = blobstoreService.getUploadedBlobs (요청)를 실행할 때,' –
사과, 외모 알려진 버그 (https://code.google.com/p/googleappengine/issues/detail?id=3223)에 부딪치게됩니다. 마지막 코멘트에서 언급 된 문제가 있습니다. 재확인하기 만하면 새 프로젝트에서 그대로 샘플 코드를 사용해 볼 수 있습니다. – skywalker