【问题标题】:Xamarin.android - Copy .jpg to shared folderXamarin.android - 将 .jpg 复制到共享文件夹
【发布时间】:2020-01-02 16:07:26
【问题描述】:

我正在使用 Samba 文件服务器将文件从我的 Android 设备复制到 Windows 上的共享文件夹。使用 .txt 文件我没有任何问题,工作正常,但我试图将 .jpg 文件复制到共享文件夹中,但它失败了。我从互联网上搜索了很多代码,但有人解决了我的问题。 我设法复制了图像,但是当我打开它时,它已损坏。

有人有示例代码吗?

我的代码是这样的:

Java.IO.File mfile = new Java.IO.File(item.FullName);

var mSharedFolderCalidad = new SmbFile(AppGlobalConfigSoftware.Instance.Parameters.PathToDownloadCalidad + item.Name);

//If exists don't create another time
if (!mSharedFolderCalidad.Exists())
     mSharedFolderCalidad.CreateNewFile();

InputStream inFile = new FileInputStream(mfile);

SmbFileOutputStream sfos = new SmbFileOutputStream(mSharedFolderCalidad);

byte[] buf = new byte[1024];
int len;
while ((len = inFile.Read(buf)) > 0) 
{
  sfos.Write(buf, 0, len);
}

inFile.Close();
sfos.Close();

感谢所有帮助。

谢谢。

【问题讨论】:

  • 请添加您现在正在使用的代码例程,并为问题添加更多上下文。
  • 我在上面添加了我的代码。上下文是:我用我的设备拍了一张照片,我想把照片上传到共享文件夹中。
  • 您好,谢谢!解决了。​​

标签: file xamarin.android jcifs


【解决方案1】:

您可以先使用nuget中的Media.Plugin拍照。

var file = await CrossMedia.Current.TakePhotoAsync(new StoreCameraMediaOptions
{
    PhotoSize = PhotoSize.Medium,
});
public  byte[] ReadFully(Stream input)
{
    byte[] buffer = new byte[16*1024];
    using (MemoryStream ms = new MemoryStream())
    {
        int read;
        while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
        {
            ms.Write(buffer, 0, read);
        }
        return ms.ToArray();
    }
}

MediaFile 拥有GetStream().

您可以将其用于 Stream,然后将其转换为 byte[]。这是一种方法:

定义一个流

Stream imageStream;

拍照后初始化。

imageStream = file.GetStream();

var imageArr= ReadFully(imageStream );

然后将其写入您的文件夹。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-06
    • 2014-03-03
    • 2011-02-21
    • 2022-10-14
    相关资源
    最近更新 更多