android如何从客户端选择一个excel文件,并通过okhttp3上传到服务器,用flask打开,请给出详细代码
时间: 2023-06-09 20:02:28 浏览: 141
android 选择文件上传至服务器 包含服务器代码
4星 · 用户满意度95%
好的,以下是代码示例:
在Android客户端中,您可以使用以下代码来选择Excel文件并上传到服务器:
1. 添加以下依赖项到您的build.gradle文件中:
```
implementation 'com.squareup.okhttp3:okhttp:4.9.0'
implementation 'com.squareup.okhttp3:okhttp-urlconnection:4.9.0'
implementation 'net.openid:appauth:0.7.1'
```
2. 在您的AndroidManifest.xml文件中添加以下权限:
```
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
```
3. 在您的Activity中添加以下代码:
```
private static final int PICK_FILE_REQUEST_CODE = 1;
private File selectedFile;
...
// 创建从Android设备选择文件的意图
Intent pickFileIntent = new Intent(Intent.ACTION_GET_CONTENT);
pickFileIntent.setType("*/*");
pickFileIntent.addCategory(Intent.CATEGORY_OPENABLE);
// 使用选择器启动意图
startActivityForResult(Intent.createChooser(pickFileIntent, "Choose file"), PICK_FILE_REQUEST_CODE);
...
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == PICK_FILE_REQUEST_CODE && resultCode == RESULT_OK) {
if (data != null) {
// 从结果意图中获取选定的文件uri
Uri uri = data.getData();
if (uri != null) {
selectedFile = new File(getRealPathFromURI(uri));
// 将文件上传到服务器
uploadFile(selectedFile);
}
}
}
}
// 获取选定文件的真实路径
private String getRealPathFromURI(Uri uri) {
String selectedFilePath = "";
Cursor cursor = getContentResolver().query(uri, null, null, null, null);
if (cursor != null) {
cursor.moveToFirst();
int index = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA);
selectedFilePath = cursor.getString(index);
cursor.close();
}
return selectedFilePath;
}
// 将Excel文件上传到服务器
private void uploadFile(File file) {
OkHttpClient client = new OkHttpClient();
RequestBody requestBody = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("file", file.getName(), RequestBody.create(file, MediaType.parse("application/octet-stream")))
.build();
Request request = new Request.Builder()
.url("http://your-server-url.com/upload")
.post(requestBody)
.build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
e.printStackTrace();
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if (response.isSuccessful()) {
// 对响应进行处理
String responseBody = response.body().string();
Log.d(TAG, responseBody);
} else {
Log.d(TAG, "Upload failed");
}
}
});
}
```
在Flask服务器端,您可以使用以下代码来接收并处理上传的Excel文件:
```
from flask import Flask, request, jsonify
import os
app = Flask(__name__)
@app.route('/upload', methods=['POST'])
def upload_file():
file = request.files['file']
if file:
filename = file.filename
file.save(os.path.join('/uploads', filename))
# 进行必要的Excel处理操作
# ...
return jsonify(success=True)
else:
return jsonify(success=False)
```
希望这对您有所帮助!
阅读全文