cancel
Showing results for 
Search instead for 
Did you mean: 

upload error

Former Member
0 Kudos

hi experts,

i have added one ui element of upload in my view.i have written correponding code in the init() and in upload action.but after attaching the corresponding file from the desktop pc ,when i was clicking on upload button it was giving the following error.

Error stacktrace:

java.lang.StringIndexOutOfBoundsException: String index out of range: -1

at java.lang.String.substring(String.java:1438)

at com.sap.tc.webdynpro.services.sal.util.cache.ResourcePool.getKeyFromUrl(ResourcePool.java:215)

at com.sap.tc.webdynpro.serverimpl.defaultimpl.datatransport.DataTransportFactory.getOutputMassDatasource(DataTransportFactory.java:76)

at com.sap.tc.webdynpro.services.sal.datatransport.core.InternalMassDataTransport.getOutputMassDatasource(InternalMassDataTransport.java:41)

at com.sap.tc.webdynpro.progmodel.context.ModifiableBinaryType.parse(ModifiableBinaryType.java:101)

at com.sap.tc.webdynpro.clientserver.data.DataContainer.doParse(DataContainer.java:1268)

at com.sap.tc.webdynpro.clientserver.data.DataContainer.validatePendingUserInput(DataContainer.java:1167)

at com.sap.tc.webdynpro.clientserver.data.DataContainer.validatePendingUserInput(DataContainer.java:529)

at com.sap.tc.webdynpro.clientserver.cal.ClientComponent.validate(ClientComponent.java:592)

at com.sap.tc.webdynpro.clientserver.cal.ClientApplication.validate(ClientApplication.java:635)

at com.sap.tc.webdynpro.clientserver.task.WebDynproMainTask.transportData(WebDynproMainTask.java:596)

at com.sap.tc.webdynpro.clientserver.task.WebDynproMainTask.execute(WebDynproMainTask.java:528)

at com.sap.tc.webdynpro.clientserver.cal.AbstractClient.executeTasks(AbstractClient.java:49)

at com.sap.tc.webdynpro.clientserver.cal.ClientManager.doProcessing(ClientManager.java:239)

at com.sap.tc.webdynpro.serverimpl.defaultimpl.DispatcherServlet.doWebDynproProcessing(DispatcherServlet.java:130)

at com.sap.tc.webdynpro.serverimpl.defaultimpl.DispatcherServlet.doContent(DispatcherServlet.java:92)

at com.sap.tc.webdynpro.serverimpl.defaultimpl.DispatcherServlet.doPost(DispatcherServlet.java:42)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)

at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.runServlet(HttpHandlerImpl.java:373)

at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.handleRequest(HttpHandlerImpl.java:250)

at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:319)

at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:297)

at com.sap.engine.services.httpserver.server.RequestAnalizer.invokeWebContainer(RequestAnalizer.java:696)

at com.sap.engine.services.httpserver.server.RequestAnalizer.handle(RequestAnalizer.java:221)

at com.sap.engine.services.httpserver.server.Client.handle(Client.java:92)

at com.sap.engine.services.httpserver.server.Processor.request(Processor.java:146)

at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:37)

at com.sap.engine.core.cluster.impl6.session.UnorderedChannel$MessageRunner.run(UnorderedChannel.java:71)

at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)

at java.security.AccessController.doPrivileged(Native Method)

at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:94)

at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:140)

thanx in advance.

pp

Accepted Solutions (0)

Answers (1)

Answers (1)

Former Member
0 Kudos

Hi Hara,

Hope you have created two attributes

att1.type string for file name

att2.binary for the data stream

In init create an instance of this code

IPrivate<view name>.I<nodename>element elementname = wdcontext.create<nodename>element

Then bind it to the node

Create a simple trype using the following code

IWDAttributeInfo attinfo = wdContext.node<node name>().getNodeInfo().getAttribute("att2");

ISimpleTypeModifiable modinfo = attinfo.getModifiableSimpleType(); IWDModifiableBinaryType bintype = (IWDModifiableBinaryType)modinfo;

String location = "";

String file = wdContext.currentcontextelement.get<att1>;

String filename = location+file

File destinationFile = new file(filename);

fileOutputStream out = new fileOutputStream(destinationFile);

Check whether att2 is null or not

If not

out.write(<node element>.getatt2)

This error may be because you are not properly writing to the file

N.B.:- Settings needed to be made in server for uploading a file.

In VisualAdmin&#61664;Services&#61664;Web Container, set the parameter MultipartBodyParameterName to com.sap.servlet.multipart.body

Hope this helps you

Regards

Rohit

Message was edited by: Rohit Radhakrishnan