SNo*_*Nos 1 php android android-networking
我正在尝试将从相机或图库拍摄的图像上传到 php 服务器。为此,我正在使用库Fast-Android-Networking
使用我的代码,我可以看到文件正在写入服务器,但是,它保存为0 B,该onProgress函数也正在注销写入的正确字节。
这有什么帮助吗?如何使用此库将从相机或图库拍摄的文件正确传递到服务器?
private File mFileTemp;
btn_update.setOnClickListener(new OnClickListener() {
// Start new list activity
public void onClick(View v) {
uploadFileNew(pref.getString("user_id", null));
}
});
public void uploadFileNew(String frm_iduser) {
String uploadUrl = "https://plus.example.com/apps/mobile/registered_users/uploadProfilePicAndroid.php?fileName=" + frm_iduser + ".png";
AndroidNetworking.upload(uploadUrl)
.addMultipartFile("image",mFileTemp)
.addMultipartParameter("key","value")
.setTag("uploadTest")
.setPriority(Priority.HIGH)
.build()
.setUploadProgressListener(new UploadProgressListener() {
@Override
public void onProgress(long bytesUploaded, long totalBytes) {
// do anything with progress
Log.d("responce_app",String.valueOf(bytesUploaded));
}
})
.getAsJSONObject(new JSONObjectRequestListener() {
@Override
public void onResponse(JSONObject response) {
// do anything with response
Log.d("responce_app",String.valueOf(response));
}
@Override
public void onError(ANError error) {
// handle error
Log.d("responce_app",String.valueOf(error));
Log.d("responce_app","errorrrr");
}
});
}
Run Code Online (Sandbox Code Playgroud)
当我看到你的问题时,我正在编写确切的场景。我很高兴地告诉你,我刚刚做到了。
这是安卓代码:
@Override
public void onClick(View view) {
Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
photoPickerIntent.setType("image/*");
startActivityForResult(photoPickerIntent, 5000);
}
public String getRealPathFromURI(Uri contentURI, Activity context) {
String[] projection = { MediaStore.Images.Media.DATA };
@SuppressWarnings("deprecation")
Cursor cursor = context.managedQuery(contentURI, projection, null,
null, null);
if (cursor == null)
return null;
int column_index = cursor
.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
if (cursor.moveToFirst()) {
String s = cursor.getString(column_index);
// cursor.close();
return s;
}
// cursor.close();
return null;
}
@Override
protected void onActivityResult(int reqCode, int resultCode, Intent data) {
super.onActivityResult(reqCode, resultCode, data);
if (resultCode == RESULT_OK) {
try {
final Uri selectedImageUri = data.getData();
//final InputStream imageStream = //getContentResolver().openInputStream(selectedImageUri);
//final Bitmap selectedImage = //BitmapFactory.decodeStream(imageStream);
//imgUser.setImageBitmap(selectedImage);
String imagepath = getRealPathFromURI(selectedImageUri,this);
File imageFile = new File(imagepath);
AndroidNetworking.upload("http://test.sth.com/upload_file4.php")
.addMultipartFile("file", imageFile)
//.addMultipartParameter("key","value")
//.setTag("uploadTest")
.setPriority(Priority.HIGH)
.build()
.setUploadProgressListener(new UploadProgressListener() {
@Override
public void onProgress(long bytesUploaded, long totalBytes) {
// do anything with progress
tvProgress.setText((bytesUploaded / totalBytes)*100 + " %");
}
})
.getAsString(new StringRequestListener() {
@Override
public void onResponse(String response) {
Toast.makeText(MainActivity.this, response, Toast.LENGTH_SHORT).show();
}
@Override
public void onError(ANError anError) {
Toast.makeText(MainActivity.this, anError.getMessage(), Toast.LENGTH_SHORT).show();
}
});
} catch (FileNotFoundException e) {
e.printStackTrace();
Toast.makeText(MainActivity.this, "Something went wrong", Toast.LENGTH_LONG).show();
}
}else {
Toast.makeText(MainActivity.this, "You haven't picked Image",Toast.LENGTH_LONG).show();
}
}
Run Code Online (Sandbox Code Playgroud)
这是php代码:
<?php
$target_dir = "uploads/";
$target_file_name = $target_dir.basename($_FILES["file"]["name"]);
$response = array();
if(isset($_FILES["file"]))
{
if(move_uploaded_file($_FILES["file"]["tmp_name"],$target_file_name))
{
$success = true;
$message = "Uploaded!!!";
}
else
{
$success = false;
$message = "NOT Uploaded!!! _ Error While Uploading";
}
}
else{
$success = false;
$message = "missing field";
}
$response["success"] = $success;
$response["message"] = $message;
echo json_encode($response);
?>
Run Code Online (Sandbox Code Playgroud)
注意:1. 将这些权限添加到您的清单中:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
Run Code Online (Sandbox Code Playgroud)
还要确保您已将此行添加到您的OnCreate:
AndroidNetworking.initialize(getApplicationContext());
| 归档时间: |
|
| 查看次数: |
4965 次 |
| 最近记录: |