安卓上传文件 到 php (问:如何在安卓上传文件到php?)
在安卓开发中,上传文件到服务端是一个常见的需求,而通常我们会使用PHP作为服务器端的语言来处理上传的文件。
下面我将向大家介绍如何在安卓客户端使用Java代码将文件上传到PHP。
一、在AndroidManifest.xml文件里加入网络权限:
xml
<uses-permission android:name="android.permission.INTERNET" />
二、创建一个AsyncTask异步任务类,该类的作用是将文件上传到服务器:
“`java
private class UploadFileTask extends AsyncTask {
private String mUrl;
private String mFilePath;
private String mFieldName;
public UploadFileTask(String url, String filePath, String fieldName) {
mUrl = url;
mFilePath = filePath;
mFieldName = fieldName;
}
@Override
protected String doInBackground(String... params) {
String result = "";
try {
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(mUrl);
File file = new File(mFilePath);
FileBody fileBody = new FileBody(file);
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
builder.addPart(mFieldName, fileBody);
httpPost.setEntity(builder.build());
HttpResponse response = httpClient.execute(httpPost);
HttpEntity resEntity = response.getEntity();
if (resEntity != null) {
result = EntityUtils.toString(resEntity);
}
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
@Override
protected void onPostExecute(String result) {
// 文件上传成功后执行的操作
// 可以根据服务器返回的数据执行相应的操作
}
}
“`
三、使用AsyncTask异步任务类来上传文件:
“`java
String url = “http://example.com/upload.php”;
String filePath = “/sdcard/test.jpg”;
String fieldName = “file”;
UploadFileTask task = new UploadFileTask(url, filePath, fieldName);
task.execute();
“`
其中,url是服务器端的处理文件上传的PHP脚本的地址,filePath是要上传的文件的路径,fieldName是所上传文件在POST中的字段名。
四、PHP服务器端的文件处理:
php
<?php
if (!empty($_FILES)) {
$file = $_FILES['file'];
move_uploaded_file($file['tmp_name'], './uploads/' . $file['name']);
}
?>
该PHP脚本会将上传的文件存储在服务器上的./uploads/目录下。
以上就是在安卓上传文件到PHP的方法,希望可以帮助到大家。