php - 从 Access 2007 导出 XML(base64 附件)

标签 php xml export ms-access-2007 base64

自最新版本的 Access (2007/2010) 起,可以向行添加附件。我有这样一个包含成员及其照片的数据库,但我想导出它们(包括照片)并将它们用于新的网络应用程序。我已经使用 Access 2007 进行了 XML 导出。我附加的照片在 XML 导出中进行了编码。

请在下面找到文件 smiley.jpg 的示例,我已将其附加在数据库中的随机行中。 (您可以在这里找到原始文件 smiley.jpg: http://img812.imageshack.us/img812/8248/smileyq.jpg )

<Foto>
<FileData>FAAAAAEAAAAEAAAAagBwAGcAAAD/2P/gABBKRklGAAEBAQBkAGQAAP/bAEMAAwIC
AwICAwMDAwQDAwQFCAUFBAQFCgcHBggMCgwMCwoLCw0OEhANDhEOCwsQFhARExQV
FRUMDxcYFhQYEhQVFP/bAEMBAwQEBQQFCQUFCRQNCw0UFBQUFBQUFBQUFBQUFBQU
FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFP/AABEIACgAKAMBIgAC
EQEDEQH/xAAbAAACAgMBAAAAAAAAAAAAAAAABgUHAQgJA//EADIQAAIABAMFBgYC
AwAAAAAAAAECAwQFEQAGEgcTFSExCBRRYYGRCSIkMkGxM3GCodH/xAAYAQADAQEA
AAAAAAAAAAAAAAAEBQgHBv/EACgRAAIBAwMDBAIDAAAAAAAAAAECEQADBAUhMQYS
QQciYYETURRxkf/aAAwDAQACEQMRAD8A6nxoyS8Mu5soxAz1VnI9xBPd4fiBdj64
KpP7+omCD8kHl/l+f+Y0T+KR2m9ofZ+puziHkKomi8Um5qPOTywEi69wIOiCdakB
W3rEjqdAF7XxmWp6te1TLOlafd7GkiZiSASdxuAIjbmjUthF73FbnzMSoKxZZ+YD
eG9NvbBI5yqFMihZ0d8l782AAdR+j6++FSo5xqSbIouaBTTxhaEakKaQf5+77zdW
6/d8vjjUT4aHaJz92gKDtAXPdQasmlzktElJ5oCQiN+IpeCNCgWTdqQOo126WxO7
6h1FgWcnWsDLITHZAwLEz3tA9pkHfmfqmwS0xW2y810ekp2DUZZJiXiCJCcXDDBh
GyZUGp1ZMizfTzNyoPQOBe/qBb2wYp/o/qW31VpKZ6jtee1x+mETHwQQR8GKS5Fk
2LhWstMlavPq33CO/tqNsQGYMv5U2nU+Xh1qj0vMsnIzpiwUqEqkwkGZguyFlDgg
OrBluPMYlNodBVp12imOslO21NLx3gsHFrjWhDC9gevPmOmKRg54idngvR80S802
zxXZqTmaWgvHh02ETcSs6FBaGqE6UjkFCmkOVZbvKGvPn4Gr5eEs/mVyVA2LKSSC
vkkggwN4mJinloK1tW8VeUaNqwq0LLGVtmdOiwKLSKZlqRnJwRIkOnyqS8OLMRWC
BmCAAszFVuevIeGIM9oHZeKXxI7RsqcP06u88altFv714Uouc37Q8SHS8tSs1D2d
7xYlUzJNQXgJU0Uhu6ySuAzo5ADx7BdGpULM2pM2/i5+QzNkq1u1PuJBA2/uAW57
V5J480Z3IONzV0St+P0zT92/T2uL/wCsGPfZ3l9EnUeFv2k5LUEaYjvGdnN+RdyW
NrnqeXIdMGK49HtOvYehXL9wELdclZ2lQAJ+yD/lIdQcNdAHgVYU9IwKlKvLzCCJ
Cccwf2PPCNUMm1Gmuxk/rZf8C4DgeYPI+ntgwY7vqjo/Sep7U56HvUbOphgOYmCC
Pggx4ihrGRcsn2mkYbI8vCrcQGz2liqatffODQt7q8d5ovfzvh5p+TajUnUzv0Uv
+VuC5HkOg9fbBgxknTvp1o2bktczGuXRb4VmEfcAGPgEUdey7irCwJp6kZGDTpVJ
eXQQ4SCwA/Z88GDBikbVpLKLatKFVRAA2AA4AH6pQSSZNf/Z
</FileData>
<FileName>smiley.jpg</FileName>
<FileType>jpg</FileType>
</Foto>

它似乎是用base64编码的,但是当我尝试使用PHP函数base64_decode()对其进行解码时,我没有得到有效的输出。我在 XSD 文件中发现了一些额外的数据,这些数据是在 Access 中进行 XML 导出时自动生成的。那里似乎指的是base64,所以我不知道出了什么问题。

<xsd:element name="FileData" minOccurs="0" od:jetType="oleobject" od:sqlSType="image">
<xsd:simpleType>
<xsd:restriction base="xsd:base64Binary">
<xsd:maxLength value="1476395008"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>

我尝试了以下代码来获取图像($data 填充了 XML 导出中的编码内容):

<?php
header('Content-Type: image/jpeg');
echo base64_decode($data);
?>

我浏览了几个网站,但找不到解决此问题的方法。看来Access也在压缩数据,因为不可能恢复原始文件。我希望 StackOverflow 上有人能解决这个问题!

主要目标是导出约。来自 Access 2007 的 2500 名成员(附有照片)。数据可以轻松导出,但由于照片的存在,使得导出变得复杂。

最佳答案

看起来,解码文件的第一个 20 字节是一些服务信息。

尝试这样的事情(这并不理想,但你理解这个想法):

echo substr(base64_decode($data), 20);

关于php - 从 Access 2007 导出 XML(base64 附件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6163862/

相关文章:

PHP更新功能不起作用

java - xml解析字符串匹配Java

github - GitHub数据导出如何获取源码?

export - Frege 中的显式模块导出

php - 获取.dat文件内容php

php - 在 PHP 类中,python 类中的 self 等价于什么?

c# - trim() 一个xml文档中所有xml元素和属性的值使用c#

javascript - 是否可以使用 Javascript 创建一个新的 xml 文件?

r - 将数据帧导出到 R 中的文本文件时出错

php - 使用 PHP mail() 函数的 SMTP 身份验证