NutzCN Logo
问答 上传的时丢失部分数据
发布于 14天前 作者 qq_046f8286 72 次浏览 复制 上一个帖子 下一个帖子
标签:

代码如下:
@At("/upload")
@Ok("json")
@AdaptBy(type = UploadAdaptor.class, args = { "ioc:myUpload" })
public Object upload(@Param("Fdata") TempFile tf,@Param("..") Map map) {
BaseResultMap ret = new BaseResultMap(true, "上传成功!");// 如果不发生异常的话,返回此消息
try {
XtUploadFilePojo xtUploadFilePojo=(XtUploadFilePojo) xtUploadFileService.upload(tf,map);
ret.setData(xtUploadFilePojo);
} catch (Exception e) {
logError(e);// 第一步,先打印异常,log4j记录日志
ret.setOk(false);// 第二步,设置返回结果为false
ret.setMessage(WarningException.getExceptionMsg(e));// 第三步,返回给用户错误消息,过滤掉底层异常消息(例如SQLException,FileNotFoundException)
}
return ret;
}

传入的json:
{"businessTableName":"M_CUSTOMER","businessTableId":1496,"fileContentTypeName":"客户","mCustomerContract":"{"mCustomerContractbigContractTypeId":"73","companyId":2,"signDate":"2018-01-08T00:00:00","startDate":"2018-01-08T00:00:00","endDate":"2018-01-30T00:00:00","bigContractTypeId":"73"}"}

实际获取的map数据:
{businessTableName=M_CUSTOMER, businessTableId=1496, fileContentTypeName=客户, mCustomerContract={, Fdata=org.nutz.mvc.upload.TempFile@3760e1ed}

结果 mCustomerContract 里面缺失了数据.。。

12 回复

发代码用 插入代码 按钮

@At("/upload")
 @Ok("json")
 @AdaptBy(type = UploadAdaptor.class, args = { "ioc:myUpload" })
 public Object upload(@Param("Fdata") TempFile tf,@Param("..") Map map) {
 BaseResultMap ret = new BaseResultMap(true, "上传成功!");// 如果不发生异常的话,返回此消息
 try {
 XtUploadFilePojo xtUploadFilePojo=(XtUploadFilePojo) xtUploadFileService.upload(tf,map);
 ret.setData(xtUploadFilePojo);
 } catch (Exception e) {
 logError(e);// 第一步,先打印异常,log4j记录日志
 ret.setOk(false);// 第二步,设置返回结果为false
 ret.setMessage(WarningException.getExceptionMsg(e));// 第三步,返回给用户错误消息,过滤掉底层异常消息(例如SQLException,FileNotFoundException)
 }
 return ret;
 }

传入的json:
{"businessTableName":"M_CUSTOMER","businessTableId":1496,"fileContentTypeName":"客户","mCustomerContract":"{"mCustomerContractbigContractTypeId":"73","companyId":2,"signDate":"2018-01-08T00:00:00","startDate":"2018-01-08T00:00:00","endDate":"2018-01-30T00:00:00","bigContractTypeId":"73"}"}

实际获取的map数据:
{businessTableName=M_CUSTOMER, businessTableId=1496, fileContentTypeName=客户, mCustomerContract={, Fdata=org.nutz.mvc.upload.TempFile@3760e1ed}

结果 mCustomerContract 里面缺失了数据.。。

json 数据:
{
"businessTableName": "M_CUSTOMER",
"businessTableId": 1496,
"fileContentTypeName": "客户",
"mCustomerContract": "{"mCustomerContractbigContractTypeId":"73","companyId":2,"signDate":"2018-01-08T00: 00: 00","startDate":"2018-01-08T00: 00: 00","endDate":"2018-01-30T00: 00: 00","bigContractTypeId":"73"}"
}

又是上传文件又是json,这样不好吧

前端代码怎么写的?UploadAdapter不处理json转换的

就是要上传json 的时候,同时上传文件啊。

function public_ajaxFileUpdateUpload(url,htmlfileId,jsonObject,callback_fun) {
	var retvalue;
	var myhtmlfileId=htmlfileId;
	var inputFile = $("#"+myhtmlfileId+" > input:file")[0];
	$.ajaxFileUpload({
	    url: url,                 //用于文件上传的服务器端请求地址
	    fileElementId: inputFile,               //文件上传域的ID
	    dataType: 'comment',                   //返回值类型 一般设置为json
	    data:jsonObject,
		cache : false,
		async : false, 		    
	    success: function (data, status)    //服务器成功响应处理函数
	    {
	    	callback_fun(cutPreToObject(data));
	    },
	    error: function (data, status, e)   //服务器响应失败处理函数
	    {
	    	if (confirm("与服务器通讯失败,可能因为超时,是否重新登录?")) {
				top.location = '/fzzl';
			}
	    },
	    complete: function () {
	        var jq = $("#"+myhtmlfileId+" > input:file");
	        jq.before(inputFile);
	        jq.remove();
	    }
	});
	return retvalue;
}

jsonObject是什么内容,data只能是键值对,不能再内嵌对象的,

{
 "businessTableName": "M_CUSTOMER",
 "businessTableId": 1496,
 "fileContentTypeName": "客户",
 "mCustomerContract": "{"mCustomerContractbigContractTypeId":"73","companyId":2,"signDate":"2018-01-08T00: 00: 00","startDate":"2018-01-08T00: 00: 00","endDate":"2018-01-30T00: 00: 00","bigContractTypeId":"73"}"
}

就是这个json数据

把mCustomerContract的值变成字符串来传递

我传递前,已经全部encode 一次,把他们变成字符串了。

encode??? 你怎么encode的? 没看到代码呢,mCustomerContract肯定是要先转json字符串的

添加回复
请先登陆
回到顶部