【问题标题】:Extracting Windows File Properties with http link使用 http 链接提取 Windows 文件属性
【发布时间】:2018-05-18 12:59:19
【问题描述】:

我正在为this problem 工作,proposed solution 为我工作。

但是,现在我需要在我的实际应用程序(AWS Beanstalk .NET Web 应用程序)中完成这项工作。我的 beanstalk 应用程序知道图片的 url 来源。知道 url,我可以get a stream 并处理文件(通过创建字节数组甚至位图对象)。

但是,似乎要获取上述文件属性(例如创建文件的相机类型或绘画应用程序),我确实需要一个本地文件,因为这是预期的输入参数。

这对我来说是个问题。我知道 http 链接,我知道字节,但我没有文件路径之类的东西。

我该如何解决这个问题?我需要 windows 文件属性。

【问题讨论】:

  • 您下载文件并检查下载后是否获得属性?这只是为了确保可以从下载文件中提取属性。然后下一部分是弄清楚如何在没有下载的情况下做到这一点
  • 是的,现在我需要了解如何在不保存文件的情况下进行操作
  • 您能否在此类文件和预期提取数据的问题中添加示例 URL?
  • 我使用的图片是保密的。但是你可以用手机拍照。将图片保存到文件系统时,这些属性中会提到手机的公司名称。
  • 我认为您正在寻找的是 EXIF 数据。 exif.org/Exif2-2.PDF。我怀疑你会得到一个从在线文件中提取数据而不完全下载它的库。您需要做的是了解提取 EXIF 信息、下载这些字节并提取信息所需的最小字节数。不会很容易,因为您需要深入研究相同的内容。这个python代码可能会显示一些需要做什么的逻辑github.com/python-pillow/Pillow/blob/…

标签: asp.net windows file amazon-elastic-beanstalk


【解决方案1】:

如果我理解正确,您想从 URL 读取图像元数据,而不是先将其保存到文件中,即直接从 Internet。

这是一种适合我的方法:

string demoImageUrl = "https://raw.githubusercontent.com/ianare/exif-samples/master/jpg/Canon_40D.jpg";

byte[] imgData = null;

using (var wc = new WebClient())
{
    imgData = wc.DownloadData(demoImageUrl);
}

using (var sr = new MemoryStream(imgData, false))
{
    BitmapSource image = BitmapFrame.Create(sr);
    BitmapMetadata md = (BitmapMetadata)image.Metadata;
    string comment = md.Comment;
    string title = md.Title;
    string dateTaken = md.DateTaken;
}

您需要添加对PresentationCoreWindowsBase 程序集的引用,还需要包含以下命名空间:

using System.Windows.Media.Imaging;

【讨论】:

  • 确实,我对图像很感兴趣。你的方法有效。谢谢
猜你喜欢
  • 2016-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多