【发布时间】:2015-05-22 06:20:28
【问题描述】:
我正在使用 MultipartEntityBuilder 将图像发送到 php 服务器,我将照片和视频发送到设备摄像头到一个目录,我需要将文件保存在新的 ArrayList 上并将其发送到 php 服务器。
总是报错:
我的代码
private class MyAsyncTask extends AsyncTask<String, Integer, Double>
{
@Override
protected Double doInBackground (String... params)
{
String datos = value.getText().toString();
HttpClient httpClient = getNewHttpClient();
HttpPost httppost = new HttpPost("https://myurl.com");
try
{
path = Environment.getExternalStorageDirectory().toString() + "/mydirectory";
File fileArray = new File(path);
ArrayList<File> files = new ArrayList<File>(Arrays.asList(fileArray.listFiles()));
int itemCount = files.size();
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
for (int i = 0; i < itemCount; i++)
{
builder.addPart("images[]", new FileBody(new File(path + "/" + num_img)));
num_img++;
}
builder.addTextBody("response", "prueba");
HttpEntity entity = builder.build();
httppost.setEntity(entity);
//...............................
}
更新
protected void onPostExecute (Double result)
{
path = Environment.getExternalStorageDirectory().toString() + "/myDirectory";
runOnUiThread(new Runnable() {
@Override
public void run() {
File fileArray = new File(path);
ArrayList<File> files = new ArrayList<File>(Arrays.asList(fileArray.listFiles()));
int itemCount = files.size();
tv_files.setText("valor:" + itemCount);
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
builder.addTextBody("response", "prueba");
for (int i = 0; i < itemCount; i++)
{
builder.addPart("images[]", new FileBody(new File(path + "/" + num_img)));
num_img++;
}
HttpEntity entity = builder.build();
}
});
【问题讨论】:
-
在后台线程中进行 ui 操作(访问视图)。还将此
value.getText().toString();作为参数传递给 asynctask -
runOnUiThread()@Raghunandan? -
我会在
onPreExecute和onPostExecute做与ui相关的操作。 -
是的,runOnUiThread() 会做
-
好的,谢谢,我会努力写的
标签: java android multipartentity