afinal 上传文件服务端接受参数为空

发布于 2021-11-20 09:57:59 字数 1040 浏览 905 评论 8

做个了上传和提交数据的测试,遇到点问题,如果只加 string类型的参数,server端接受到参数没问题,如果加上file类型的,server端servlet 接受到参数都为空了。

代码如下

FinalHttp fh = new FinalHttp();

    AjaxParams params = new AjaxParams();
    params.put("action", "test");
params.put("username", "aaaaa");
    try {
params.put("file",new File("/mnt/sdcard/1.jpg"));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


    fh.post(serverUrl,params, new AjaxCallBack<Object>() {
    
    @Override
    public void onLoading(long count, long current) {
    super.onLoading(count, current);
    }
    @Override
    public void onSuccess(Object t) {
    // TODO Auto-generated method stub
    logger.info("返回信息是+"+ t.toString());
    }
});

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

苍暮颜 2021-11-24 06:14:20

楼主,我也是用的 像你这样的请求方式,传递了中文字符,结果服务器的数据库乱码了。。服务器的编码也是UTF-8,fh.configCharset(String charset)也无效  不明白怎么设置。有没有可以指教呢

把昨日还给我 2021-11-24 06:12:59

楼主,请问这个问题你解决了吗?望请指点!

彩扇题诗 2021-11-24 06:12:02

引用来自“michaely”的答案

multipart request形式提交给服务器后,数据如下:servlet的request接收到的数据如下:

--R4up9BcvYRcb1Pt3-KorE68x-4j4i3
Content-Disposition: form-data; name="test"

test
--R4up9BcvYRcb1Pt3-KorE68x-4j4i3
Content-Disposition: form-data; name="test1"

test1
--R4up9BcvYRcb1Pt3-KorE68x-4j4i3
Content-Disposition: form-data; name="testFile"; filename="testPic.jpg"
Content-Type: application/octet-stream
Content-Transfer-Encoding: binary
[][][[][][][][]
2021-11-24 06:11:08

手机上传大文件报错,应该怎么处理?Afinal最大支持多大文件上传?希望大神帮忙,出错代码:

07-17 16:51:41.516: E/dalvikvm-heap(24220): Out of memory on a 33547222-byte allocation.
07-17 16:51:41.516: I/dalvikvm(24220): "main" prio=5 tid=1 RUNNABLE
07-17 16:51:41.516: I/dalvikvm(24220):   | group="main" sCount=0 dsCount=0 obj=0x41695700 self=0x400eb0b0
07-17 16:51:41.516: I/dalvikvm(24220):   | sysTid=24220 nice=0 sched=0/0 cgrp=apps handle=1075228464
07-17 16:51:41.516: I/dalvikvm(24220):   | schedstat=( 0 0 0 ) utm=397 stm=111 core=1
07-17 16:51:41.516: I/dalvikvm(24220):   at java.io.ByteArrayOutputStream.expand(ByteArrayOutputStream.java:~91)
07-17 16:51:41.516: I/dalvikvm(24220):   at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:201)
07-17 16:51:41.516: I/dalvikvm(24220):   at net.tsz.afinal.http.MultipartEntity.addPart(MultipartEntity.java:109)
07-17 16:51:41.516: I/dalvikvm(24220):   at net.tsz.afinal.http.MultipartEntity.addPart(MultipartEntity.java:95)
07-17 16:51:41.516: I/dalvikvm(24220):   at net.tsz.afinal.http.AjaxParams.getEntity(AjaxParams.java:179)
07-17 16:51:41.516: I/dalvikvm(24220):   at net.tsz.afinal.FinalHttp.paramsToEntity(FinalHttp.java:415)
07-17 16:51:41.516: I/dalvikvm(24220):   at net.tsz.afinal.FinalHttp.post(FinalHttp.java:254)
07-17 16:51:41.516: I/dalvikvm(24220):   at com.jftt.cpf.PhotoUploadActivity.uploadNewPhoto(PhotoUploadActivity.java:77)
07-17 16:51:41.516: I/dalvikvm(24220):   at com.jftt.cpf.PhotoUploadActivity.viewClick(PhotoUploadActivity.java:111)
07-17 16:51:41.516: I/dalvikvm(24220):   at java.lang.reflect.Method.invokeNative(Native Method)
07-17 16:51:41.516: I/dalvikvm(24220):   at java.lang.reflect.Method.invoke(Method.java:511)
07-17 16:51:41.516: I/dalvikvm(24220):   at net.tsz.afinal.annotation.view.EventListener.invokeClickMethod(EventListener.java:109)
07-17 16:51:41.516: I/dalvikvm(24220):   at net.tsz.afinal.annotation.view.EventListener.onClick(EventListener.java:99)
07-17 16:51:41.516: I/dalvikvm(24220):   at android.view.View.performClick(View.java:4171)
07-17 16:51:41.516: I/dalvikvm(24220):   at android.view.View$PerformClick.run(View.java:17070)
07-17 16:51:41.516: I/dalvikvm(24220):   at android.os.Handler.handleCallback(Handler.java:615)
07-17 16:51:41.516: I/dalvikvm(24220):   at android.os.Handler.dispatchMessage(Handler.java:92)
07-17 16:51:41.516: I/dalvikvm(24220):   at android.os.Looper.loop(Looper.java:137)
07-17 16:51:41.516: I/dalvikvm(24220):   at android.app.ActivityThread.main(ActivityThread.java:4875)
07-17 16:51:41.516: I/dalvikvm(24220):   at java.lang.reflect.Method.invokeNative(Native Method)
07-17 16:51:41.516: I/dalvikvm(24220):   at java.lang.reflect.Method.invoke(Method.java:511)
07-17 16:51:41.516: I/dalvikvm(24220):   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:804)
07-17 16:51:41.516: I/dalvikvm(24220):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:571)
07-17 16:51:41.516: I/dalvikvm(24220):   at dalvik.system.NativeStart.main(Native Method)
如此安好 2021-11-24 06:09:00

作者的头像虽然很猥琐。但是确实很有才。大神级别。

爱你是孤单的心事 2021-11-24 05:52:47

你好,请问一下怎么区分上传的是普通文字还是图片。

无法言说的痛 2021-11-24 05:20:56

List<DiskFileItem> DiskFileItems = sfu.parseRequest(request);这句代码报错。。。提示把DiskFileItem改成FileItem

平生欢 2021-11-23 14:07:47

如果上传文件的话,afinal是以了multipart request的形式提交到服务器。

1、如果没有文件上传的话:

直接使用:

request.getParameter("key");

就可以接受到传来的值了。

2、如果有文件上传,afinal使用了multipart request的形式提交到服务器。这里给传出了接收数据的方法(下面是一个普通的servlet类的dopost方法,其他语言自行参考):

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		boolean isUpload = ServletFileUpload.isMultipartContent(request);
		if(isUpload){
			DiskFileItemFactory factory = new DiskFileItemFactory();
		    factory.setSizeThreshold(10);
		    factory.setRepository(new File("E:\upload"));
		    ServletFileUpload upload = new ServletFileUpload(factory);
		    upload.setSizeMax(10);
			ServletFileUpload sfu = new ServletFileUpload(factory);
			try {
				List<DiskFileItem> DiskFileItems =  sfu.parseRequest(request);
				for(DiskFileItem item : DiskFileItems){
					System.out.println("-------------key:"+	item.getFieldName()); 
					System.out.println("-------------value:"+	item.getString()); 
					System.out.println("-------------inputSream:"+	item.getInputStream()); 
				}
			} catch (FileUploadException e) {
				e.printStackTrace();
			}
		}
		
		response.getWriter().print("okok!");
	}

这里使用到了apache的FileUpload库:网址http://commons.apache.org/fileupload/

希望,能对你有帮助。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文