2014-04-21 3 views
1

웹에 업로드 파일이 있습니다. 이 방법 :스프링 웹 플로우로 파일을 업로드하는 중 이상한 오류가 발생했습니다.

public MultipartFile foto; 
(...) 
public MultipartFile getFoto() { 
    return foto; 
} 
public void setFoto(MultipartFile foto) { 

     System.out.println("Receiving image: "+foto.getOriginalFilename()); 

    this.foto = foto; 
} 

CommonsMultipartResolver : 내가 확인하기 위해 거기 sysoyut를 뒀다

<beans:bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/> 

ModelAttribute 모 데르에서

<form:form method="post" modelAttribute="proyecto" enctype="multipart/form-data"> 
<input type="file" accept="image" name="foto"> 
<input type="submit" value="Next" name="_eventId_gotoPageTwo"> 
</form:form> 

, 나는 속성은 "사진"이라고했다. 방법은 파일의 이름이 올바른지,라고 ...하지만이 후, a는 예외가 나타납니다 그것을 바인딩 후 파일을 잃고 봄처럼 보이는 때문에 SYSOUT 때문에,

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.webflow.execution.repository.FlowExecutionRestorationFailureException: A problem occurred restoring the flow execution with key 'e1s2' 
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:894) 
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:621) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 

org.springframework.webflow.execution.repository.FlowExecutionRestorationFailureException: A problem occurred restoring the flow execution with key 'e1s2' 
org.springframework.webflow.execution.repository.snapshot.SerializedFlowExecutionSnapshotFactory.restoreExecution(SerializedFlowExecutionSnapshotFactory.java:82) 
org.springframework.webflow.execution.repository.snapshot.AbstractSnapshottingFlowExecutionRepository.restoreFlowExecution(AbstractSnapshottingFlowExecutionRepository.java:89) 
org.springframework.webflow.execution.repository.impl.DefaultFlowExecutionRepository.getFlowExecution(DefaultFlowExecutionRepository.java:115) 
org.springframework.webflow.executor.FlowExecutorImpl.resumeExecution(FlowExecutorImpl.java:168) 
org.springframework.webflow.mvc.servlet.FlowHandlerAdapter.handle(FlowHandlerAdapter.java:183) 
org.springframework.webflow.mvc.servlet.FlowController.handleRequest(FlowController.java:174) 
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48) 
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923) 
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852) 
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882) 
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:621) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 



org.springframework.webflow.execution.repository.snapshot.SnapshotUnmarshalException: IOException thrown deserializing the flow execution stored in this snapshot -- this should not happen! 
org.springframework.webflow.execution.repository.snapshot.SerializedFlowExecutionSnapshot.unmarshal(SerializedFlowExecutionSnapshot.java:101) 
org.springframework.webflow.execution.repository.snapshot.SerializedFlowExecutionSnapshotFactory.restoreExecution(SerializedFlowExecutionSnapshotFactory.java:80) 
org.springframework.webflow.execution.repository.snapshot.AbstractSnapshottingFlowExecutionRepository.restoreFlowExecution(AbstractSnapshottingFlowExecutionRepository.java:89) 
org.springframework.webflow.execution.repository.impl.DefaultFlowExecutionRepository.getFlowExecution(DefaultFlowExecutionRepository.java:115) 
org.springframework.webflow.executor.FlowExecutorImpl.resumeExecution(FlowExecutorImpl.java:168) 
org.springframework.webflow.mvc.servlet.FlowHandlerAdapter.handle(FlowHandlerAdapter.java:183) 
org.springframework.webflow.mvc.servlet.FlowController.handleRequest(FlowController.java:174) 
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48) 
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923) 
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852) 
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882) 
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:621) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 



java.io.FileNotFoundException: D:\Desarrollo\NuevoSTS\vfabric-tc-server-developer-2.9.4.RELEASE\base-instance\work\Catalina\localhost\myproject\upload_f9d1d249_39f7_45f8_87ef_c28e7f61dbf3_00000006.tmp (El sistema no puede encontrar el archivo especificado) 
java.io.FileInputStream.open(Native Method) 
java.io.FileInputStream.<init>(FileInputStream.java:146) 
org.apache.commons.fileupload.disk.DiskFileItem.readObject(DiskFileItem.java:684) 
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
java.lang.reflect.Method.invoke(Method.java:606) 
java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017) 
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1893) 
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) 
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) 
java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) 
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915) 
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) 
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) 
java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) 
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915) 
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) 
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) 
java.io.ObjectInputStream.readObject(ObjectInputStream.java:370) 
java.util.HashMap.readObject(HashMap.java:1184) 
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
java.lang.reflect.Method.invoke(Method.java:606) 
java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017) 
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1893) 
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) 
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) 
java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) 
java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:500) 
org.springframework.webflow.core.collection.LocalAttributeMap.readObject(LocalAttributeMap.java:331) 
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
java.lang.reflect.Method.invoke(Method.java:606) 
java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017) 
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1893) 
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) 
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) 
java.io.ObjectInputStream.readObject(ObjectInputStream.java:370) 
org.springframework.webflow.engine.impl.FlowSessionImpl.readExternal(FlowSessionImpl.java:153) 
java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1837) 
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1796) 
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) 
java.io.ObjectInputStream.readObject(ObjectInputStream.java:370) 
java.util.LinkedList.readObject(LinkedList.java:1136) 
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
java.lang.reflect.Method.invoke(Method.java:606) 
java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017) 
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1893) 
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) 
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) 
java.io.ObjectInputStream.readObject(ObjectInputStream.java:370) 
org.springframework.webflow.engine.impl.FlowExecutionImpl.readExternal(FlowExecutionImpl.java:304) 
java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1837) 
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1796) 
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) 
java.io.ObjectInputStream.readObject(ObjectInputStream.java:370) 
org.springframework.webflow.execution.repository.snapshot.SerializedFlowExecutionSnapshot.deserialize(SerializedFlowExecutionSnapshot.java:194) 
org.springframework.webflow.execution.repository.snapshot.SerializedFlowExecutionSnapshot.unmarshal(SerializedFlowExecutionSnapshot.java:99) 
org.springframework.webflow.execution.repository.snapshot.SerializedFlowExecutionSnapshotFactory.restoreExecution(SerializedFlowExecutionSnapshotFactory.java:80) 
org.springframework.webflow.execution.repository.snapshot.AbstractSnapshottingFlowExecutionRepository.restoreFlowExecution(AbstractSnapshottingFlowExecutionRepository.java:89) 
org.springframework.webflow.execution.repository.impl.DefaultFlowExecutionRepository.getFlowExecution(DefaultFlowExecutionRepository.java:115) 
org.springframework.webflow.executor.FlowExecutorImpl.resumeExecution(FlowExecutorImpl.java:168) 
org.springframework.webflow.mvc.servlet.FlowHandlerAdapter.handle(FlowHandlerAdapter.java:183) 
org.springframework.webflow.mvc.servlet.FlowController.handleRequest(FlowController.java:174) 
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48) 
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923) 
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852) 
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882) 
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:621) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 

는 그 이상을 완벽하게 보여줍니다.

어떤 도움이 필요합니까? 고맙습니다.

UPDATE :

뷰 상태 : 내가 해결 ... 정확히 솔루션을 해봤지만, 적어도 내가 이미지를 얻을 수 있습니다

<view-state id="inicio" view="inicio" model="proyecto"> 
<binder> 
      <binding property="titulo"/> 
      <binding property="descripcion"/> 
      <binding property="ciudad"/> 
      <binding property="foto"/> 
     </binder> 

    <transition on="gotoPageTwo" to="flow2"></transition> 
</view-state> 
+0

Servlet 컨텍스트 xml에 CommonsMultipartResolver를 선언 했습니까? – Prasad

+0

예, 위의 코드에서 지정하는 것을 잊어 버렸습니다. 업데이트 중. – Fustigador

+0

질문 : 1)이 견해에 대한 귀하의 흐름 속에서, 귀하는 바인딩 권리를 사용 중지하지 않았습니까? 2) JSP로 흐름 실행 키를 "/>로 지정 했습니까? – Prasad

답변

0

. 모델 클래스에서 getter와 setter를 사용하여 새 byte [] 속성을 추가했습니다. setFoto() 메소드 (스프링에 의해 호출 한)에서 :

public void setFoto(MultipartFile foto) { 

     System.out.println("Receiving image: "+foto.getOriginalFilename()); 
    try { 
     fotobytes=foto.getBytes(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    this.foto = null; 
    foto=null; 
} 

이런 식으로, 나는 이미지의 바이트를 얻고, 필요, 또는 바이트에서 직접 표시하는 경우 나 데이터베이스에 저장할 수 있습니다. 중요한 것은 사진이 null로 설정됩니다. 이런 식으로, 스프링 doesnt는 예외가 봄이 잃어버린 것을 보여줄 것 같은 파일을 찾을 필요가있다.

내가 말했듯이, 정확하게 해결책이 아니기 때문에, 나는 대답으로 질문을하지 않을 것이지만, 적어도 나는 내 이미지를 가지고있어.

관련 문제