# Bildupload über API

**URL:** <https://forum.shopware.com/t/bildupload-ueber-api/103301>\
**Category:** Programmierung\
**Created:** [12. März 2024 um 21:44 UTC](https://forum.shopware.com/t/bildupload-ueber-api/103301 "2024-03-12T21:44:47Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![rotknecht](https://avatars.discourse-cdn.com/v4/letter/r/b5ac83/32.png) [@rotknecht](https://forum.shopware.com/u/rotknecht)\
**Post date:** [12. März 2024 um 21:44 UTC](https://forum.shopware.com/t/bildupload-ueber-api/103301/1 "2024-03-12T21:44:47Z")

</div>

Hallo,

ich versuche ein Bild über die API hochzuladen und habe mich an den Artikel "[Image Upload über REST-API](https://forum.shopware.com/t/image-upload-uber-rest-api/70465/22) gehalten.

Ich nutze [VB.NET](http://VB.NET) und RestSharp:

Das Bild anlegen und die MediaID erhalten funktioniert, jedoch bekomme ich beim Hochladen einen Fehler:  
„{„errors“:[{„status“:„400“,„code“:„CONTENT\_\_MEDIA\_UPLOAD“,„title“:„Bad Request“,„detail“:„No file extension provided. Please use the \u0022extension\u0022 query parameter to specify the extension of the uploaded file.“,„meta“:{„parameters“:{„message“:„No file extension provided. Please use the \u0022extension\u0022 query parameter to specify the extension of the uploaded file.“}}}]}“

Hier ist mein Code:

```auto
            ' ##### NEUES BILD IN DIESE ID EINFÜGEN #####

            request = New RestRequest("_action/media/{mediaID}/upload", Method.Post)
            request.AddHeader("Authorization", "Bearer " & ShopwareToken.bearerToken)
            'request.AddHeader("Content-Type", "application/octet-stream")
            'request.AddParameter("application/octet-stream", "string", ParameterType.RequestBody)
            request.AddParameter("extension", dateiErweiterung)
            request.AddParameter("fileName", dateiName)

            ' Lese den Inhalt des Bildes in einen Byte-Array ein
            Dim fileBytes As Byte() = File.ReadAllBytes(filename)

            ' Setze den Content-Type des Request-Headers auf "multipart/form-data"
            request.AddHeader("Content-Type", "multipart/form-data")

            ' Füge die Datei als Parameter zum Request hinzu
            request.AddParameter("file", fileBytes, ParameterType.RequestBody)

            request.AddUrlSegment("mediaID", mediaID)

            response = client.Execute(request)

```

Ich habe auch mit der in restsharp verfügbaren Methode .Addfile experimentiert, bekomme aber denselben Fehler…

Was mache ich falsch?

---

<div class="post-metadata">

**Author:** ![chamaw](https://avatars.discourse-cdn.com/v4/letter/c/b487fb/32.png) [@chamaw](https://forum.shopware.com/u/chamaw)\
**Post date:** [12. März 2024 um 22:09 UTC](https://forum.shopware.com/t/bildupload-ueber-api/103301/2 "2024-03-12T22:09:37Z")

</div>

das Ganze ist ein wenig „speziell“ 🙂  
(ich habe hier ein paar Snippets reingesetzt, C# lässt sich aber sicher als [VB.net](http://VB.net) ähnlich lösen)

1. extension und fileName kommen als Query an die URL (obwohl es ein POST ist)

```auto
string apiPath = "/api/_action/media/" + MediaId + "/upload?";
// (bei mir sieht das dann so aus: _action/media/[media_uuid]/upload? ...) 
apiPath += "extension=" + HttpUtility.UrlEncode(mediaUpload.Extension);
apiPath += "&fileName=" + HttpUtility.UrlEncode(mediaUpload.Filename);

```

1. das ist KEIN multipart/form-data Post, sondern die Binärdaten liegen „einfach“ im Body. Der Content-Type ist der mime-type des Bildes.

```auto
ByteArrayContent byteArrayContent = new ByteArrayContent(rawBytes);
byteArrayContent.Headers.ContentType = new MediaTypeHeaderValue("image/" + mediaUpload.Extension.ToLower());
byteArrayContent.Headers.ContentLength = rawBytes.LongLength;

```

1. auch geht kein file parameter  
siehe 2)

2. das Byte Array wird einfach im Body gepostet

```auto
HttpResponseMessage result = httpClient.PostAsync(apiPath, byteArrayContent).Result;

```

herzlichst

Carsten Harnisch  
– media at work

---

<div class="post-metadata">

**Author:** ![rotknecht](https://avatars.discourse-cdn.com/v4/letter/r/b5ac83/32.png) [@rotknecht](https://forum.shopware.com/u/rotknecht)\
**Post date:** [13. März 2024 um 12:49 UTC](https://forum.shopware.com/t/bildupload-ueber-api/103301/3 "2024-03-13T12:49:48Z")

</div>

Danke für die Tipps. Die haben bei meiner Umsetzung geholfen. 🙂

---

<div class="post-metadata">

**Author:** ![system](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/3X/2/9/29c7587ba660f00e4995d1743162782e5d6d8653.svg) [@system](https://forum.shopware.com/u/system)\
**Post date:** [12. April 2024 um 12:49 UTC](https://forum.shopware.com/t/bildupload-ueber-api/103301/4 "2024-04-12T12:49:56Z")

</div>

Dieses Thema wurde automatisch 30 Tage nach der letzten Antwort geschlossen. Es sind keine neuen Antworten mehr erlaubt.
