Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# asp.net-将图像上载到服务器后缺少图像关键字_C#_Asp.net Mvc_Fine Uploader_Xmp_Iptc - Fatal编程技术网

C# asp.net-将图像上载到服务器后缺少图像关键字

C# asp.net-将图像上载到服务器后缺少图像关键字,c#,asp.net-mvc,fine-uploader,xmp,iptc,C#,Asp.net Mvc,Fine Uploader,Xmp,Iptc,我正在将图像上传到服务器,然后处理图像。有趣的是,上传后的图片关键词都不见了。尽管还有其他图像属性 解析标记没有问题,因此请忽略下面的代码片段。 using (var xmp = Xmp.FromFile(workingFilePath, XmpFileMode.ReadOnly)) { var iptc = new Iptc(xmp); var Keywords = iptc.Keywords; } 注意:我正在使用它上传图像 FineUploader配置- var man

我正在将图像上传到服务器,然后处理图像。有趣的是,上传后的图片关键词都不见了。尽管还有其他图像属性

解析标记没有问题,因此请忽略下面的代码片段。

using (var xmp = Xmp.FromFile(workingFilePath, XmpFileMode.ReadOnly))
{
    var iptc = new Iptc(xmp);
    var Keywords = iptc.Keywords;
}
注意:我正在使用它上传图像

FineUploader配置-

var manualUploader = new qq.FineUploader({
    element: document.getElementById('fine-uploader-manual-trigger'),
    template: 'qq-template-manual-trigger',
    request: {
        endpoint: '/image/uploadimage',
        params: {
            datestamp: datetimeStamp
        }
    },
    callbacks: {
    },
    autoUpload: false,
    multiple: true
});

qq(document.getElementById("trigger-upload")).attach("click", function () {
    manualUploader.uploadStoredFiles();
});
精细上传日志-

 [Fine Uploader 5.10.1] Received 1 files.
 [Fine Uploader 5.10.1] Attempting to validate image.
 [Fine Uploader 5.10.1] Generating new thumbnail for 0
 [Fine Uploader 5.10.1] Attempting to draw client-side image preview.
 [Fine Uploader 5.10.1] Attempting to determine if _DSE8404.jpg can be rendered in this browser
 [Fine Uploader 5.10.1] First pass: check type attribute of blob object.
 [Fine Uploader 5.10.1] Second pass: check for magic bytes in file header.
 [Fine Uploader 5.10.1] '_DSE8404.jpg' is  able to be rendered in this browser
 [Fine Uploader 5.10.1] Moving forward with EXIF header parsing for '_DSE8404.jpg'
 [Fine Uploader 5.10.1] EXIF Byte order is little endian
 [Fine Uploader 5.10.1] Found 10 APP1 directory entries
 [Fine Uploader 5.10.1] Successfully parsed some EXIF tags
 [Fine Uploader 5.10.1] Sending simple upload request for 0
 [Fine Uploader 5.10.1] xhr - server response received for 0
编辑: 看来我找到问题了。标签中有一些冰岛字符。这就是问题所在。任何人都知道如何解决这个问题

最新编辑
如果这些标签是从AdobePhotoshopLightroom添加的,那么就面临这个问题。但是,如果通过更新属性从windows计算机添加相同的标记,它就可以工作

您的问题可能有两个原因:

  • 在某个时刻,您正在重写图片,可能是因为某个类无法正确处理标记,或者由于其配置而将标记去掉。
    如果您只保存从客户端接收的确切二进制内容,您还将检索原始标记,前提是图像文件的格式符合您的预期

  • 如果图像文件的存储方式与预期不同,则可能无法检索标记,具体取决于提取标记的方式。
    例如,
    JPG/JPEG
    标记可以以各种方式存储(XMP-being-one)。 有关更多详细信息,请查看。您将看到还有其他存储标记的方法(例如
    EXIF
    Extended XMP
    QVCI
    FLIR
    )。
    要检索这些标记,您必须根据它们嵌入图像文件的方式对其进行解析。
    从您发布的服务器端代码来看,您似乎只解析XMP标记。根据用于对原始图像进行编码的软件,标签可能以替代格式存储

  • 虽然这看起来很明显,但我的建议是:

  • 确保您的工作流不涉及客户端发送到服务器上保存的内容之间的任何显式隐式图像操作
  • 也就是说,根据标签的格式,您还必须确保以适当的方式提取标签

  • JPEG
    文件可能很难正确处理,因为它们的存储方式多种多样。

    请展示您的优秀上传工具configuration@RayNicholus-添加在post Uploader中,Fine Uploader在这里绝对不是错误。除非启用了缩放功能,否则在上传之前不会对文件进行任何操作(这里的情况并非如此)。你的问题一定是其他原因造成的。我的猜测是“标记”不是图像的EXIF/XMP数据的一部分。这可能是存储在Windows中实际文件之外。@RayNicholus-看起来我发现了问题。标签中有一些冰岛字符。这就是问题所在。你对此有什么想法吗?
    Xmp
    Iptc
    来自哪里?您是否尝试过对这两个文件进行二进制比较?在服务器端,只需获取流并将其作为映像写入文件。经过进一步调查发现,如果这些标签是从AdobePhotoshopLightroom添加的,则面临问题。如果我们在windows机器属性窗口中添加相同的标记,效果会很好。@AbdulAhad我编辑了我的答案来说明这一点。您可能正在尝试以不用于存储标记的格式读取标记。例如,
    Windows机器
    可以将它们存储在
    XMP
    中,但是
    Adobe Photoshop Lightroom
    可以将它们存储在
    EXIF
    中。实际上我不知道
    Adobe Photoshop Lightroom
    ,但你所说的可能是一个原因。我试试看。