我知道我的問題已經解決已經多次,但我無法找到任何東西,這將有助於我與我的具體問題。採摘文件(URI到文件路徑)
我有一個意圖從系統中選擇一個文件的任何地方:
private void showFileChooser() {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("*/*");
intent.addCategory(Intent.CATEGORY_OPENABLE);
try {
startActivityForResult(
Intent.createChooser(intent, "Select a File to Upload"),
FILE_SELECT_CODE);
} catch (android.content.ActivityNotFoundException ex) {
// Potentially direct the user to the Market with a Dialog
Toast.makeText(this, "Please install a File Manager.",
Toast.LENGTH_SHORT).show();
}
}
我撿起這個意圖在這裏:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case FILE_SELECT_CODE:
if (resultCode == RESULT_OK) {
// Get the Uri of the selected file
Uri uri = data.getData();
}
和我有一個上傳方法類似所以:
private void upload(File file){
RequestParams params = new RequestParams();
try {
params.put("fileToUpload", file);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
AsyncHttpClient client = new AsyncHttpClient();
client.post("http://...", params, new AsyncHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
System.out.println("statusCode "+statusCode);//statusCode 200
}
@Override
public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
}
});
}
的問題是,我不知道如何「嫁」兩種方法onActivity和上傳,因爲我不知道如何處理從我的意圖得到的信息,以便AsyncHttpClient可以使用它。
我試圖轉換的URI的絕對路徑,但無法管理(解決方案網上說似乎工作,其中專門爲圖像)。我也不能將uri「轉換」爲一個文件。
無論如何,我能做到這一點?我錯過了什麼嗎?
是的,謝謝你,異步HTTP允許輸入流,而不是一個文件。 – hachel