java上传json文件上传,ajaxFileUpload 上传文件和json数据

本文记录了一次使用Nutz MVC框架处理文件与JSON数据上传时遇到的问题及解决方案。问题表现为后台只能接收到部分JSON数据,通过调整前后端数据交互方式最终解决了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

11 回复

[DEBUG] 2018-02-09 15:12:33,416 org.nutz.ioc.impl.NutIoc.get(NutIoc.java:151) - Get 'shiroUtil'

[DEBUG] 2018-02-09 15:12:33,417 org.nutz.ioc.impl.NutIoc.get(NutIoc.java:151) - Get 'dateUtil'

[DEBUG] 2018-02-09 15:12:33,417 org.nutz.ioc.impl.NutIoc.get(NutIoc.java:151) - Get 'stringUtil'

[DEBUG] 2018-02-09 15:12:33,417 org.nutz.ioc.impl.NutIoc.get(NutIoc.java:151) - Get 'rtsResultMarkerController'

[DEBUG] 2018-02-09 15:12:33,417 org.nutz.mvc.upload.UploadAdaptor.getReferObject(UploadAdaptor.java:184) - Select Html4 Form upload parser --> /RealTiSystem/platform/RTS/result_marker/saveMarker

[DEBUG] 2018-02-09 15:12:33,417 org.nutz.mvc.upload.FastUploading.parse(FastUploading.java:39) - FastUpload : /platform/RTS/result_marker/saveMarker

[DEBUG] 2018-02-09 15:12:33,418 org.nutz.mvc.upload.FastUploading.parse(FastUploading.java:54) - info created

[DEBUG] 2018-02-09 15:12:33,418 org.nutz.mvc.upload.FastUploading.parse(FastUploading.java:60) - Params map created - 0 params

[DEBUG] 2018-02-09 15:12:33,418 org.nutz.mvc.upload.FastUploading.parse(FastUploading.java:77) - boundary:

------WebKitFormBoundaryunYH3GPaS5oVIu5b

[DEBUG] 2018-02-09 15:12:33,418 org.nutz.mvc.upload.FastUploading.parse(FastUploading.java:100) - skip first boundary

[DEBUG] 2018-02-09 15:12:33,419 org.nutz.mvc.upload.FastUploading.parse(FastUploading.java:111) - Reading...

[DEBUG] 2018-02-09 15:12:33,419 org.nutz.mvc.upload.FastUploading.parse(FastUploading.java:133) - Upload File info: FilePath=[null],fieldName=[infoJson]

[DEBUG] 2018-02-09 15:12:33,419 org.nutz.mvc.upload.FastUploading.parse(FastUploading.java:214) - Found a param, name=[infoJson] value=[{]

[DEBUG] 2018-02-09 15:12:33,419 org.nutz.mvc.upload.FastUploading.parse(FastUploading.java:133) - Upload File info: FilePath=[null],fieldName=[points]

[DEBUG] 2018-02-09 15:12:33,419 org.nutz.mvc.upload.FastUploading.parse(FastUploading.java:214) - Found a param, name=[points] value=[[{]

[DEBUG] 2018-02-09 15:12:33,420 org.nutz.mvc.upload.FastUploading.parse(FastUploading.java:231) - ...Done 235 bytes readed

[DEBUG] 2018-02-09 15:12:33,426 cn.wizzer.app.web.commons.processor.LogTimeProcessor.process(LogTimeProcessor.java:26) - [POST]URI=/RealTiSystem/platform/RTS/result_marker/saveMarker 10ms

[WARN ] 2018-02-09 15:12:33,426 org.nutz.mvc.impl.processor.FailProcessor.process(FailProcessor.java:28) - Error@/platform/RTS/result_marker/saveMarker :

org.nutz.castor.FailToCastObjectException: Fail to cast from to for {{}

at org.nutz.castor.Castors.cast(Castors.java:262)

at org.nutz.castor.Castors.castTo(Castors.java:316)

at org.nutz.mvc.adaptor.injector.NameInjector.get(NameInjector.java:93)

at org.nutz.mvc.adaptor.AbstractAdaptor.adapt(AbstractAdaptor.java:255)

at org.nutz.mvc.upload.UploadAdaptor.adapt(UploadAdaptor.java:117)

at org.nutz.mvc.impl.processor.AdaptorProcessor.process(AdaptorProcessor.java:28)

at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)

at org.nutz.mvc.impl.processor.ActionFiltersProcessor.process(ActionFiltersProcessor.java:58)

at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)

at cn.wizzer.app.web.commons.processor.XssSqlFilterProcessor.process(XssSqlFilterProcessor.java:35)

at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)

at cn.wizzer.app.web.commons.processor.NutShiroProcessor.process(NutShiroProcessor.java:52)

at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)

at org.nutz.mvc.impl.processor.ModuleProcessor.process(ModuleProcessor.java:123)

at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)

at org.nutz.mvc.impl.processor.EncodingProcessor.process(EncodingProcessor.java:27)

at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)

at org.nutz.mvc.impl.processor.UpdateRequestAttributesProcessor.process(UpdateRequestAttributesProcessor.java:15)

at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)

at cn.wizzer.app.web.commons.processor.GlobalsSettingProcessor.process(GlobalsSettingProcessor.java:36)

at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)

at cn.wizzer.app.web.commons.processor.LogTimeProcessor.process(LogTimeProcessor.java:21)

at org.nutz.mvc.impl.NutActionChain.doChain(NutActionChain.java:44)

at org.nutz.mvc.impl.ActionInvoker.invoke(ActionInvoker.java:67)

at org.nutz.mvc.ActionHandler.handle(ActionHandler.java:31)

at org.nutz.mvc.NutFilter.doFilter(NutFilter.java:202)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)

at cn.wizzer.app.web.commons.filter.RouteFilter.doFilter(RouteFilter.java:31)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)

at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:61)

at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108)

at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137)

at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)

at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66)

at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)

at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)

at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)

at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)

at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383)

at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)

at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:94)

at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)

at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:502)

at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1132)

at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:684)

at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1533)

at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1489)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)

at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

at java.lang.Thread.run(Thread.java:748)

Caused by: org.nutz.lang.born.BorningException: Fail to born or cast to 'cn.wizzer.app.RTS.modules.models.result.Rts_result_marker'

by args: [@({)]

because: No suitable Constructor or Factory Method!!

at org.nutz.lang.Mirror.born(Mirror.java:988)

at org.nutz.castor.castor.String2Object.cast(String2Object.java:16)

at org.nutz.castor.castor.String2Object.cast(String2Object.java:9)

at org.nutz.castor.Castors.cast(Castors.java:252)

... 60 more

infoJson是字符串吧?先用字符串接收,然后toJson吧

恩恩,infoJson 在前端转为json了,我试下不转为json,用字符串接收

按json字符串接收,然后Json.fromJson

```

var objMeasure = {"title":null,"description":null,"type":null,"iconurl":null,"maptype":null,"picsource":null,"genre":null};

var infoJson = JSON.stringify(objMeasure);

var pointsArray = JSON.stringify(points);

$.ajaxFileUpload({

url: '../platform/RTS/result_marker/saveMarker',

secureuri:false ,

fileElementId:'picsourceo',

data:{

"infoJson":infoJson,

"points":pointsArray

},

dataType : 'json',

success: function (data) { //返回json结果

-----------------------------------------

@At("/saveMarker")

@Ok("json")

@AdaptBy(type = UploadAdaptor.class, args = { "${app.root}/WEB-INF/tmp" })

public Object addDo(@Param("picsourceo") File f,HttpServletRequest req,@Param("infoJson") String rtsResultMarker,@Param("points")String points) {

System.err.println("标注对象");

------------------------------

[DEBUG] 2018-02-10 15:35:45,729 cn.wizzer.app.web.commons.processor.LogTimeProcessor.process(LogTimeProcessor.java:26) - [POST]URI=/RealTiSystem/platform/RTS/result_marker/saveMarker 59726ms

[DEBUG] 2018-02-10 15:35:59,209 org.quartz.impl.jdbcjobstore.JobStoreSupport$ClusterManager.manage(JobStoreSupport.java:3877) - ClusterManager: Check-in complete.

[DEBUG] 2018-02-10 15:36:19,228 org.quartz.impl.jdbcjobstore.JobStoreSupport$ClusterManager.manage(JobStoreSupport.java:3877) - ClusterManager: Check-in complete.

[DEBUG] 2018-02-10 15:36:39,249 org.quartz.impl.jdbcjobstore.JobStoreSupport$ClusterManager.manage(JobStoreSupport.java:3877) - ClusterManager: Check-in complete.

[DEBUG] 2018-02-10 15:36:41,314 org.nutz.mvc.impl.UrlMappingImpl.get(UrlMappingImpl.java:101) - Found mapping for [POST] path=/platform/RTS/result_marker/saveMarker : RtsResultMarkerController.addDo(RtsResultMarkerController.java:96)

[DEBUG] 2018-02-10 15:36:41,314 org.nutz.ioc.impl.NutIoc.get(NutIoc.java:151) - Get 'shiroUtil'

[DEBUG] 2018-02-10 15:36:41,314 org.nutz.ioc.impl.NutIoc.get(NutIoc.java:151) - Get 'dateUtil'

[DEBUG] 2018-02-10 15:36:41,314 org.nutz.ioc.impl.NutIoc.get(NutIoc.java:151) - Get 'stringUtil'

[DEBUG] 2018-02-10 15:36:41,314 org.nutz.ioc.impl.NutIoc.get(NutIoc.java:151) - Get 'rtsResultMarkerController'

[DEBUG] 2018-02-10 15:36:41,315 org.nutz.mvc.upload.UploadAdaptor.getReferObject(UploadAdaptor.java:184) - Select Html4 Form upload parser --> /RealTiSystem/platform/RTS/result_marker/saveMarker

[DEBUG] 2018-02-10 15:36:41,315 org.nutz.mvc.upload.FastUploading.parse(FastUploading.java:39) - FastUpload : /platform/RTS/result_marker/saveMarker

[DEBUG] 2018-02-10 15:36:41,315 org.nutz.mvc.upload.FastUploading.parse(FastUploading.java:54) - info created

[DEBUG] 2018-02-10 15:36:41,316 org.nutz.mvc.upload.FastUploading.parse(FastUploading.java:60) - Params map created - 0 params

[DEBUG] 2018-02-10 15:36:41,316 org.nutz.mvc.upload.FastUploading.parse(FastUploading.java:77) - boundary:

------WebKitFormBoundarynzCx5LmQnedyvaM3

[DEBUG] 2018-02-10 15:36:41,316 org.nutz.mvc.upload.FastUploading.parse(FastUploading.java:100) - skip first boundary

[DEBUG] 2018-02-10 15:36:41,316 org.nutz.mvc.upload.FastUploading.parse(FastUploading.java:111) - Reading...

[DEBUG] 2018-02-10 15:36:41,317 org.nutz.mvc.upload.FastUploading.parse(FastUploading.java:133) - Upload File info: FilePath=[null],fieldName=[infoJson]

[DEBUG] 2018-02-10 15:36:41,317 org.nutz.mvc.upload.FastUploading.parse(FastUploading.java:214) - Found a param, name=[infoJson] value=[{]

[DEBUG] 2018-02-10 15:36:41,317 org.nutz.mvc.upload.FastUploading.parse(FastUploading.java:133) - Upload File info: FilePath=[null],fieldName=[points]

[DEBUG] 2018-02-10 15:36:41,317 org.nutz.mvc.upload.FastUploading.parse(FastUploading.java:214) - Found a param, name=[points] value=[[{]

[DEBUG] 2018-02-10 15:36:41,317 org.nutz.mvc.upload.FastUploading.parse(FastUploading.java:133) - Upload File info: FilePath=[2.jpg],fieldName=[picsourceo]

[DEBUG] 2018-02-10 15:36:41,317 org.nutz.mvc.upload.FastUploading.parse(FastUploading.java:137) - Upload Info: name=2.jpg,content_type=image/jpeg

[DEBUG] 2018-02-10 15:36:41,331 org.nutz.mvc.upload.FastUploading.parse(FastUploading.java:231) - ...Done 70802 bytes readed

[DEBUG] 2018-02-10 15:36:59,310 org.quartz.impl.jdbcjobstore.JobStoreSupport$ClusterManager.manage(JobStoreSupport.java:3877) - ClusterManager: Check-in complete.

后台不报错,debug看 用String 接收 的rtsResultMarker 就一个是 " { "

@wendal ,求助 ,

感觉 @AdaptBy(type = UploadAdaptor.class, args = { "${app.root}/WEB-INF/tmp" }) 影响了 适配

我觉得更像这个js插件的不过,看看请求里面是否有完整的json字符串吧

有完整的数据, 但是就是只获取了一个 { ,或者换种方式获取的

就是 OBject Object

@AdaptBy(type=JsonAdaptor.class) 这个 ,又不能加,因为加了那个 文件上传的 适配器了

有个变通的办法,base64转换一下试试

想了想,可能是json字符串里面换行了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值