好的。我正在把头发拔出来,因为这点。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。后倒了了。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。我正在使用以下代码通过FTP上传用户选择的照片。
using (WebClient client = new WebClient())
{
client.Credentials = new NetworkCredential("[username]", "[password]");
client.UploadFile("XXXXXXXXXX" + destinationName, "STOR", sourceFile);
}
这是标准.net的实现。然后问题出在源文件中。我暗示了点击事件以及返回事件。
protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
if ((requestCode == PickImageId) && (resultCode == Result.Ok) && (data != null))
{
}
}
这是使我发疯的问题。我需要从OnActiveResult事件返回的所选照片的物理路径,以便FTP正确上传。
我试过了;
Android.Net.Uri uri = data.Data;
physicalAddress = Convert.ToString(data.Data);
physicalAddress = Convert.ToString(uri);
这些都不返回仅“ content:\ android.provider.media \ documents \ document \ image%123164”的路径
当提供给上面的函数时,由于提供的源文件不存在,因此返回错误。
拔头发!请帮忙!
这是从基于图像内容的Uri中提取完整路径的完整示例。
注意:这将适用于KitKit及更高版本。
[Activity(Label = "FilePathFromContentURI", MainLauncher = true, Icon = "@mipmap/icon")]
public class MainActivity : Activity
{
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.Main);
Button button = FindViewById<Button>(Resource.Id.myButton);
button.Click += delegate {
Intent intent = new Intent();
intent.SetType("image/*");
intent.SetAction(Intent.ActionGetContent);
StartActivityForResult(Intent.CreateChooser(intent, "Select Image"), 1);
};
}
protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
base.OnActivityResult(requestCode, resultCode, data);
ICursor cursor = null;
try
{
// assuming image
var docID = DocumentsContract.GetDocumentId(data.Data);
var id = docID.Split(':')[1];
var whereSelect = MediaStore.Images.ImageColumns.Id + "=?";
var projections = new string[] { MediaStore.Images.ImageColumns.Data };
// Try internal storage first
cursor = ContentResolver.Query(MediaStore.Images.Media.InternalContentUri, projections, whereSelect, new string[] { id }, null);
if (cursor.Count == 0)
{
// not found on internal storage, try external storage
cursor = ContentResolver.Query(MediaStore.Images.Media.ExternalContentUri, projections, whereSelect, new string[] { id }, null);
}
var colData = cursor.GetColumnIndexOrThrow(MediaStore.Images.ImageColumns.Data);
cursor.MoveToFirst();
var fullPathToImage = cursor.GetString(colData);
Log.Info("MediaPath", fullPathToImage);
}
catch (Error err)
{
Log.Error("MediaPath", err.Message);
}
finally
{
cursor?.Close();
cursor?.Dispose();
}
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句