Android图片上传到PHP服务器,实现简单快捷的上传方法 (android 上传图片到php服务器)

随着移动互联网的不断发展,越来越多的APP需要实现图片上传功能,而将图片上传到服务器又是必须的。本篇文章将介绍如何使用Android实现图片上传到PHP服务器,实现简单快捷的上传方法。

一、前置条件

在实现图片上传之前,需要确保已经具备以下条件:

1.服务器已经搭建好,且具备PHP环境。

2.在服务器上创建文件上传目录,并确保具备写权限。

二、代码实现

1.添加网络权限

需要在AndroidManifest.xml文件中添加网络权限:

“`

“`

2.创建上传文件的Java文件

接下来,需要创建上传文件的Java文件,命名为UploadFileUtils.java,代码如下:

“`

import java.io.BufferedReader;

import java.io.DataOutputStream;

import java.io.File;

import java.io.FileInputStream;

import java.io.IOException;

import java.io.InputStreamReader;

import java.net.HttpURLConnection;

import java.net.MalformedURLException;

import java.net.URL;

public class UploadFileUtils {

private static final int TIMEOUT = 10 * 1000; // 超时时间

private static final String CHARSET = “utf-8”; // 设置编码

public static String uploadFile(File file, String requestUrl) {

String result = null;

try {

URL url = new URL(requestUrl);

HttpURLConnection conn = (HttpURLConnection) url.openConnection();

conn.setReadTimeout(TIMEOUT);

conn.setConnectTimeout(TIMEOUT);

conn.setDoInput(true);

conn.setDoOutput(true);

conn.setUseCaches(false);

conn.setRequestMethod(“POST”);

conn.setRequestProperty(“Charset”, CHARSET);

conn.setRequestProperty(“connection”, “keep-alive”);

conn.setRequestProperty(“Content-Type”, “multipart/form-data;boundary=” + “*****”); // 请求头的Content-Type

DataOutputStream dos = new DataOutputStream(conn.getOutputStream());

StringBuffer = new StringBuffer();

.append(“–“);

.append(“*****”);

.append(“\r\n”);

.append(“Content-Disposition: form-data; name=\”file\”; filename=\”” + file.getName() + “\”” + “\r\n”);

.append(“Content-Type: ” + “image/jpeg” + “\r\n\r\n”);

dos.write(.toString().getBytes());

FileInputStream fis = new FileInputStream(file);

byte[] buffer = new byte[1024];

int len = 0;

while ((len = fis.read(buffer)) != -1) {

dos.write(buffer, 0, len);

}

fis.close();

dos.write(“\r\n”.getBytes());

byte[] end_data = (“–” + “*****” + “–” + “\r\n”).getBytes(); // 结尾标识

dos.write(end_data);

dos.flush();

int res = conn.getResponseCode();

if (res == 200) {

BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));

String line;

while ((line = reader.readLine()) != null) {

result = line;

}

reader.close();

}

dos.close();

conn.disconnect();

} catch (MalformedURLException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

return result;

}

}

“`

3.在需要上传图片的Activity中调用上述Java文件

在需要上传图片的Activity中,调用之前创建好的Java文件,实现图片的上传。示例代码如下:

“`

import android.app.Activity;

import android.content.Intent;

import android.net.Uri;

import android.os.Bundle;

import android.view.View;

import android.widget.Button;

import android.widget.ImageView;

import android.widget.Toast;

import java.io.File;

public class MnActivity extends Activity {

private static final int PICK_PICTURE_REQUEST_CODE = 1; // 选择图片的请求码

private ImageView mImageView;

private Button mUploadButton;

private String mImagePath; // 图片的本地路径

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_mn);

mImageView = (ImageView) findViewById(R.id.image_view);

mUploadButton = (Button) findViewById(R.id.upload_button);

mImageView.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

Intent intent = new Intent(Intent.ACTION_PICK);

intent.setType(“image/*”);

startActivityForResult(intent, PICK_PICTURE_REQUEST_CODE);

}

});

mUploadButton.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

if (mImagePath == null) {

Toast.makeText(MnActivity.this, “请先选择图片”, Toast.LENGTH_SHORT).show();

return;

}

final File file = new File(mImagePath);

if (!file.exists()) {

Toast.makeText(MnActivity.this, “图片不存在”, Toast.LENGTH_SHORT).show();

return;

}

new Thread(new Runnable() {

@Override

public void run() {

String result = UploadFileUtils.uploadFile(file, “http://.com/upload.php”); // 服务器的文件上传接口

if (result != null) {

runOnUiThread(new Runnable() {

@Override

public void run() {

Toast.makeText(MnActivity.this, “上传成功”, Toast.LENGTH_SHORT).show();

}

});

}

}

}).start();

}

});

}

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

super.onActivityResult(requestCode, resultCode, data);

if (requestCode == PICK_PICTURE_REQUEST_CODE && resultCode == RESULT_OK) {

Uri uri = data.getData();

mImagePath = ImageUtils.getImageAbsolutePath(MnActivity.this, uri);

mImageView.setImageURI(uri);

}

}

}

“`

通过上述代码,用户可以实现图片的选择和上传操作,实现了。

三、

通过本篇文章的介绍,用户可以实现Android图片上传到PHP服务器的功能,以实现更多功能需求及应用场景的满足。在实际应用中,用户还需要注意网络环境、上传文件大小、上传文件格式等问题,以避免一些潜在安全风险,确保应用运行的安全性和稳定性。


数据运维技术 » Android图片上传到PHP服务器,实现简单快捷的上传方法 (android 上传图片到php服务器)