android 仿微信demo————注册功能完善添加头像功能(服务端)
Android仿微信 demo——注册功能完善添加头像功能(服务端)
在前面的文章中,我们已经完成了 Android仿微信 demo 的注册功能实现,包括移动端和服务端的开发。然而,在实际应用中,用户需要能够上传自己的头像来完善个人信息。这一功能是非常重要的,也是我们今天要讨论的内容。
服务端设计
首先,我们需要在服务端添加一个新的接口来处理头像上传请求。这个接口应该能够接受图片文件,并将其保存到服务器上。
1. 新增接口```java// HeadImageController.java@RestController@RequestMapping("/api")
public class HeadImageController {
@PostMapping("/headimage/upload")
public Result uploadHeadImage(@RequestParam("file") MultipartFile file) {
// 处理文件上传逻辑 return Result.success();
}
}
```
2. 文件上传逻辑```java// FileUtil.javapublic class FileUtil {
public static String uploadFile(MultipartFile file) throws IOException {
// 获取文件名 String fileName = file.getOriginalFilename();
// 创建文件夹 File folder = new File("headimages");
if (!folder.exists()) {
folder.mkdirs();
}
//保存文件 File targetFile = new File(folder, fileName);
file.transferTo(targetFile);
return targetFile.getAbsolutePath();
}
}
```
3. 接口实现```java// HeadImageController.java (续)
@PostMapping("/headimage/upload")
public Result uploadHeadImage(@RequestParam("file") MultipartFile file) {
try {
String filePath = FileUtil.uploadFile(file);
// 将文件路径保存到数据库中 return Result.success();
} catch (IOException e) {
return Result.fail();
}
}
```
移动端实现
在移动端,我们需要添加一个新的 Activity 来处理头像上传逻辑。这个 Activity 应该能够打开相册,选择图片,并将其上传到服务端。
1. 新增 Activity```java// HeadImageActivity.javapublic class HeadImageActivity extends AppCompatActivity {
private static final int REQUEST_CODE =100;
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_head_image);
// 初始化按钮 Button button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
// 打开相册 Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent, REQUEST_CODE);
}
});
}
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
// 获取选中的图片 Uri uri = data.getData();
String imagePath = getPathFromUri(uri);
//上传图片 uploadImage(imagePath);
}
}
private String getPathFromUri(Uri uri) {
String[] projection = {MediaStore.Images.Media.DATA};
Cursor cursor = getContentResolver().query(uri, projection, null, null, null);
int columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(columnIndex);
}
private void uploadImage(String imagePath) {
// 创建 MultipartEntity MultipartEntity entity = new MultipartEntity();
// 添加文件 File file = new File(imagePath);
entity.addPart("file", new FileBody(file));
// 发送请求 HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(" post.setEntity(entity);
try {
HttpResponse response = client.execute(post);
int statusCode = response.getStatusLine().getStatusCode();
if (statusCode ==200) {
// 处理响应 String responseBody = EntityUtils.toString(response.getEntity());
Log.d("HeadImageActivity", responseBody);
} else {
Log.e("HeadImageActivity", "Error: " + statusCode);
}
} catch (IOException e) {
Log.e("HeadImageActivity", "Error: " + e.getMessage());
}
}
}
```
以上就是 Android仿微信 demo——注册功能完善添加头像功能(服务端)的详细描述。希望通过阅读这个文档,你能够轻松地实现这一功能。