【发布时间】:2014-11-12 09:37:22
【问题描述】:
我想将任何数据(用户名、描述、..)和照片从我的 Android 应用程序上传到我的服务器(PHP 脚本)。
通过搜索我找到了解决方案:How to take a photo and send to HTTP POST request with Android?
通过单击我的发送按钮,上传过程开始并且 php 脚本工作但 $_POST -Vars 是空的?有谁能够帮我?我的请求代码:
[...]
case R.id.btnSend:
String strName = tName.getText().toString();
String strEmail = tEmail.getText().toString();
String strDatum = tDatum.getText().toString();
String strBeschreibung = tBeschreibung.getText().toString();
nvPairs = new ArrayList<NameValuePair>(2);
nvPairs.add(new BasicNameValuePair("sender", "AndoidApp"));
nvPairs.add(new BasicNameValuePair("name", strName));
nvPairs.add(new BasicNameValuePair("email", strEmail));
nvPairs.add(new BasicNameValuePair("datum", strDatum));
nvPairs.add(new BasicNameValuePair("beschreibung", strBeschreibung));
nvPairs.add(new BasicNameValuePair("bild", bmpUrl));
new UploadTask().execute();
}
[...]
private class UploadTask extends AsyncTask<Void, Void, List<String>> {
@Override
protected List<String> doInBackground(Void... params) {
String response = "";
try {
response = new MultipartServer().postData(new URL(postUrl), nvPairs);
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
在 MultipartServer-Code 我更改了行:
if ((avatarName = pair.getName()).equals("avatar")) {
avatarPath = pair.getValue();
}
到这里:
if ((avatarName = pair.getName()).equals("bild")) {
avatarPath = pair.getValue();
}
并且变量“bmpUrl”和“postUrl”在我的代码的另一行正确设置。
【问题讨论】:
-
the $_POST -Vars are empty?。那就是php。但是你没有显示你的 php 脚本。请做。如果 postData() 返回字符串是什么? -
在
new UploadTask().execute();你没有传递数据。有关示例,请参阅 the documentation,并特别注意execute在调用时传递变量。 -
@Jeremy。请不要混淆OP。他将所有名称值对作为 postData() 调用的参数传递。
-
@greenapps 很抱歉您的困惑。您是否看到这些变量以线程安全方式存在于异步任务中的范围?
-
这样想。我从未见过 AsyncTask 使用全局(活动)数据的问题。
标签: java php android forms upload