---
title: "XML, bild, spara på servern?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/179147-xml-bild-spara-på-servern"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "UrMe"
published: "2009-06-26T08:24:10.000Z"
updated: "2009-06-29T07:00:01.000Z"
replies: 6
views: 600
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/179147-xml-bild-spara-på-servern"
---

# XML, bild, spara på servern?

## #1 — UrMe, 2009-06-26T08:24Z

Jag måste skapa en sida som tar emot en XML-fil, och i denna XML-fil finns det en bild som är kodad med base64-data. Någon som har en guide/förslag på hur jag tar ut denna data och sparar ner filen till servern?

Så här kan det t.ex se ut:

```php
    <content-elements>
      <content-element>
        <binary-content>base64-encoded binary data</binary-content>
        <charset>utf-8</charset>
        <content-id>dcs00407.jpg</content-id>
        <content-type>image/jpeg</content-type>
        <name>dcs00407.jpg</name>
        <filename>dcs00407.jpg</filename>
      </content-element>
    </content-elements>
```

i \<binary-content\> ligger då koden för bilden.

Är det bara parsea xml-filen, ta binary-content och köra base64_decode på den, sedan på något sätt spara ner det till servern? 
Hmm kanske måste hitta någon lämplig exempelfil.

Permalänk: https://www.webforum.nu/p/179147

## #2 — UrMe, 2009-06-26T12:33Z

en följdfråga, hur får jag tag i t.ex binary-content?
Detta går ju inte, ger bara felmeddelande:

```php
$xml = simplexml_load_file("xmlfil.xml");
echo $xml->content-element->binary-content;
```

eftersom namnet innehåller "-".

Permalänk: https://www.webforum.nu/p/2191610

## #3 — nitro2k01, 2009-06-26T12:47Z

Prova 

```php
echo $xml->'content-element'->'binary-content';
// eller kanske till och med
echo $xml['content-element']['binary-content'];
```

Permalänk: https://www.webforum.nu/p/2191612

## #4 — UrMe, 2009-06-26T14:41Z

Nej inget av dem fungerar, tror jag måste köra med xpath? Men får inte till hur jag skulle kunna hämta data med xpath, någon som har ett exempel?

Permalänk: https://www.webforum.nu/p/2191614

## #5 — nitro2k01, 2009-06-26T15:08Z

Det var en kvalificerad gissning, ändock en gissning. :)
Sättet att komma runt begränsningen med - i tagg-namnen gäller dock fortfarande. 
Efter lite googlande kommer jag fram till följande: Den yttersta taggen tolkas som dokumentrot, så $sql innehåller (eller bör innehålla åtminstone) varje content-element. Om du alltid bara har ett content-element bör du kunna skriva 

```php
echo $sql['content-element']['binary-content'];
```

annars bör du kunna gå igenom elementen med en foreach-loop

```php
foreach($xml as $picture){
  echo $picture->filename . ": " . $picture['binary-content'] . "\n";
}
```

Permalänk: https://www.webforum.nu/p/2191615

## #6 — SPiN, 2009-06-26T16:54Z

Exempel i XPath:

```php
$xml = simplexml_load_file('filen.xml');
$binaryContent = $xml->xpath("/content-elements/content-element/binary-content");
$imageType = $xml->xpath("/content-elements/content-element/content-type");
header("content-type: " . $imageType[0]);
print base64_decode($binaryContent[0]);
```

Viss felhantering får du sköta själv (se till så att du faktiskt har poster på $binaryContent\[0\] och $imageType\[0\] t.ex.), men förhoppningsvis så bör ovanstående fungera. Det är dock otestat.

Permalänk: https://www.webforum.nu/p/2191618

## #7 — UrMe, 2009-06-29T07:00Z

Tackar! xpath exemplet fungerar perfekt, hade blandat in lite andra grejer i fredags som ställde till det för mig.

Permalänk: https://www.webforum.nu/p/2191731

---

Tråden på webben: https://www.webforum.nu/amne/php/179147-xml-bild-spara-på-servern
