Android 从 resources-drawable HTTP 上传文件不工作
Android HTTP Upload of File from resources-drawable not working
我正在尝试从本地 Drawable 文件夹上传文件,但出现错误。我尝试了几个在互联网上找到的代码片段(一些来自 Whosebug),但似乎没有任何效果。我的问题似乎是 File 对象的实例化,以便我可以从中创建一个 FileBody,然后通过 addPart 方法将其添加到 MultipartEntityBuilder。一切看起来都正常并可以编译,但是当 HttpClient 在运行时执行 post 时,我收到一条错误消息,指出文件名太长。
这是代码片段。我在 AsyncTask 的 doInBackground 事件中有这个:
HttpClient httpclient = new DefaultHttpClient();
httpclient.getParams().setParameter(HTTP.USER_AGENT, global.GeUserAgent());
HttpPost httppost = new HttpPost(***URLHERE***);
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
InputStream ins = getResources().openRawResource(R.drawable.IMAGE_I_AM_TRYING_TO_UPLOAD_HERE);
BufferedReader br = new BufferedReader(new InputStreamReader(ins));
StringBuffer sb = new StringBuffer();
String line;
while((line = br.readLine()) != null){
sb.append(line);
}
file1 = new File(sb.toString());
FileBody fileBody = new FileBody(file1);
builder.addPart("file1",fileBody);
httppost.setEntity(builder.build());
HttpResponse response = httpclient.execute(httppost);
有人有什么想法吗?提前谢谢你。
好的,我自己刚刚在 Whosebug 上找到了答案。
答案在于使用 addBinaryBody 而不是 MultipartEntityBuilder 的 addPart:
我希望这对某人有所帮助。
我正在尝试从本地 Drawable 文件夹上传文件,但出现错误。我尝试了几个在互联网上找到的代码片段(一些来自 Whosebug),但似乎没有任何效果。我的问题似乎是 File 对象的实例化,以便我可以从中创建一个 FileBody,然后通过 addPart 方法将其添加到 MultipartEntityBuilder。一切看起来都正常并可以编译,但是当 HttpClient 在运行时执行 post 时,我收到一条错误消息,指出文件名太长。
这是代码片段。我在 AsyncTask 的 doInBackground 事件中有这个:
HttpClient httpclient = new DefaultHttpClient();
httpclient.getParams().setParameter(HTTP.USER_AGENT, global.GeUserAgent());
HttpPost httppost = new HttpPost(***URLHERE***);
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
InputStream ins = getResources().openRawResource(R.drawable.IMAGE_I_AM_TRYING_TO_UPLOAD_HERE);
BufferedReader br = new BufferedReader(new InputStreamReader(ins));
StringBuffer sb = new StringBuffer();
String line;
while((line = br.readLine()) != null){
sb.append(line);
}
file1 = new File(sb.toString());
FileBody fileBody = new FileBody(file1);
builder.addPart("file1",fileBody);
httppost.setEntity(builder.build());
HttpResponse response = httpclient.execute(httppost);
有人有什么想法吗?提前谢谢你。
好的,我自己刚刚在 Whosebug 上找到了答案。 答案在于使用 addBinaryBody 而不是 MultipartEntityBuilder 的 addPart:
我希望这对某人有所帮助。