1

我正在尝试将产品图像从专有的 ERP 系统导入 OpenCart。

到目前为止(在 Stack Overflow 上的另一个答案的帮助下)我已经能够使用以下代码将图像保存在单独的文件中:http: //pastebin.com/gv6M8QPT

示例 XML 文件如下所示: http: //pastebin.com/k6Eq4Rpr

有3个标签:

  • id:在这种情况下为“1000”
  • 文件名:在本例中为“sampleimage.jpg”
  • mediablob:这是 bin.base64 编码的图像

我现在不想简单地保存 XML 文件,而是执行以下操作:

  1. 将 XML 文件中的 mediablob 转换为二进制图像文件
  2. 将图像文件另存为<id>.jpg-根据标签中jpg使用的扩展名创建的位置。<filename>
4

3 回答 3

1

尝试类似的东西

<?php
$im = file_get_contents('filename.gif');
$imdata = base64_encode($im);   
于 2012-10-23T11:09:11.103 回答
1
$document = new DOMDocument();
$document->loadXML($xml);
$dataNodes = $document->getElementsByTagName('mediablob');
foreach ($dataNodes as $node) {
    $base64 = $node->textContent;
    $bin = base64_decode($base64);
    file_put_contents('image.jpg', $bin);
}
于 2012-10-23T11:14:34.687 回答
1

这是完整的解决方案。

$document = new DOMDocument();
$document->loadXML($xml);
$dataNodes = $document->getElementsByTagName('mediablob');
foreach ($dataNodes as $node) {
    // extract image
    $base64 = $node->textContent;
    // decode image
    $bin = base64_decode($base64);
    // get filename
    $filenames=$node->parentNode->getElementsByTagName('filename');
    $filename=$filenames->item(0)->textContent;
    // get ID
    $ids=$node->parentNode->getElementsByTagName('id');
    $id=$ids->item(0)->textContent;
    // get extension
    $extension=preg_replace("/^.+(?=\\.[^\\.]+$)/","",$filename);
    // save file
    file_put_contents($id.$extension, $bin);
}
于 2012-10-23T13:29:35.927 回答