Java Android多部分上传+;blueimp UploadHandler:不允许文件类型
我正在尝试让我的Android多部分图像上载与默认的blueimp PHP UploadHandler一起工作,我正在将其用于我的应用程序的web版本。Java Android多部分上传+;blueimp UploadHandler:不允许文件类型,java,php,android,upload,blueimp,Java,Php,Android,Upload,Blueimp,我正在尝试让我的Android多部分图像上载与默认的blueimp PHP UploadHandler一起工作,我正在将其用于我的应用程序的web版本。 它不是开箱即用的,所以我尝试了请求的标题。 我玩了很长一段时间,但由于没有任何效果,我最终启动了Wireshark,并将blueimp演示的数据包与Android应用程序发送的数据包进行了比较。经过进一步调整后,它们看起来完全一样(很重要的部分): Blueimp演示: Android多端口: 这是我定制的generate\u response
它不是开箱即用的,所以我尝试了请求的标题。
我玩了很长一段时间,但由于没有任何效果,我最终启动了Wireshark,并将blueimp演示的数据包与Android应用程序发送的数据包进行了比较。
经过进一步调整后,它们看起来完全一样(很重要的部分):
Blueimp演示:
Android多端口:
这是我定制的
generate\u response
函数返回的结果:Array
(
[0] => stdClass Object
(
[name] => 1387215600-9207
[size] => 97894
[type] => multipart/form-data; boundary=-----Don'tmindmeI'mjustaboundary
[error] => Filetype not allowed
)
)
它似乎加载了整个数据包,而不仅仅是它的多部分。有没有办法解决这个问题?
下面是我创建请求的方式(不完全是,但这些是相关的行): 我已经为此工作了好几个小时了,真的快把我逼疯了。 我做错了什么?
编辑:
不管怎样我都能让它工作
我忘了将表单名称设置为files[],这正是UploadHandler要查找的…
现在看起来是这样的:
...
public static String BOUNDARY = "-----Don'tmindmeI'mjustaboundary";
...
MultipartEntity entity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE, BOUNDARY, null);
File file = new File(params[2]);
String filename = file.getName();
FileBody body = new FileBody(file, getMimeType(params[2]));
FormBodyPart part = new FormBodyPart("files[]", body);
part.addField("Content-Type", getMimeType(params[2]));
part.addField("Content-Disposition", "form-data; filename=\""+filename+"\"");
entity.addPart(part);
HttpPost request = new HttpPost(params[0]);
request.setHeader("Content-Type", "multipart/form-data; boundary="+BOUNDARY);
request.addHeader("Accept", "application/json, text/javascript, */*; q=0.01");
request.addHeader("Accept-Language", "en-US,en;q=0.8,de;q=0.6,es;q=0.4");
request.setEntity(entity);
HttpResponse response = client.execute(request, context);
...
...
public static String BOUNDARY = "-----Don'tmindmeI'mjustaboundary";
...
MultipartEntity entity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE, BOUNDARY, null);
File file = new File(params[2]);
String filename = file.getName();
FileBody body = new FileBody(file, getMimeType(params[2]));
FormBodyPart part = new FormBodyPart("files[]", body);
part.addField("Content-Type", getMimeType(params[2]));
part.addField("Content-Disposition", "form-data; filename=\""+filename+"\"");
entity.addPart(part);
HttpPost request = new HttpPost(params[0]);
request.setHeader("Content-Type", "multipart/form-data; boundary="+BOUNDARY);
request.addHeader("Accept", "application/json, text/javascript, */*; q=0.01");
request.addHeader("Accept-Language", "en-US,en;q=0.8,de;q=0.6,es;q=0.4");
request.setEntity(entity);
HttpResponse response = client.execute(request, context);
...