C# API pole obrázků do JS – JavaScript, AJAX, jQuery – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

C# API pole obrázků do JS – JavaScript, AJAX, jQuery – Fórum – Programujte.comC# API pole obrázků do JS – JavaScript, AJAX, jQuery – Fórum – Programujte.com

 

Lolcoman0
Duch
23. 11. 2021   #1
-
0
-

Ahoj, mám v C# API [GET], kde stahuji obrázek z SQL a převádím na objekt třídy Image a vracím pole[] těch obrázků, poté chci zobrazit obrázky v JS a uložit do local storage a poté s nimi pracovat, ale obrázky se nezobrazují, protože v src obrázků je pouze [object Object]. Jak lze extrahovat jednotlivé obrázky z pole?

 API C#

        try
        {
            List<Image> photoList = new List<Image>();
            sqlConnection.Open();
            byte[] imgArray;
            Image fullImage;
            dr = command.ExecuteReader();
            int i = dr.FieldCount;
            if (dr.HasRows)
            {
                while (dr.Read())
                {
                    imgArray = (byte[])dr["Image"];
                    fullImage = ByteArrayToImage(imgArray);

                    photoList.Add(fullImage);
                }
            }
            Image[] imagesArray;
            imagesArray = photoList.ToArray();
            return imagesArray;
        }

AJAX REQUEST

$.ajax({
    type: 'GET',
    url: '/api/fileupload/download' + "?" + "name=" + name,
    timeout: 0,
    success: function (response) {
        console.log(response);
        for (var i = 0; i < response.length; i++) {
            console.log(response[i]);
            var Img = document.createElement('img');
            Img.src = response[i];
            parent.appendChild(Img);
        }
    },
    error: function (err) {
        console.log(err);
    }
})
Nahlásit jako SPAM
IP: 94.74.226.–
gna
~ Anonymní uživatel
1891 příspěvků
23. 11. 2021   #2
-
0
-

Máš tam console.log, tak vidíš, co ti v té odpovědi přichází. Zjevně je to objekt a ten do img.src prostě nedáš. Tak holt to při příjmu zpracuj podle toho, jak to formátuješ při odesílání.

Nahlásit jako SPAM
IP: 213.211.51.–
peter
~ Anonymní uživatel
4014 příspěvků
24. 11. 2021   #3
-
0
-

   


console.log(response[i]);  //  pokud to tady pise [object Object]
Img.src = response[i]; // tak to do img nedas

console.log(JSON.stringify(response[i])); // takze se podivej, jak ten objekt vypada, zobraz si to na obrazovku

// nebo do souboru
'/api/fileupload/download' + "?" + "name=" + name,
To presmeruj v tom c++ do souboru a spoust z cmd.
Nahlásit jako SPAM
IP: 2001:718:2601:258:5c83:ae62:8100:134f...–
peter
~ Anonymní uživatel
4014 příspěvků
24. 11. 2021   #4
-
0
-

Jakoze, kde v tom objektu mas src obrazku. Src obrazku je to, co se zobrazi pri prihlizeni souboru obrazek.jpg jako zdrojovy kod. Pripadne se to da jeste prepsat pomoci base64 do toho js.
google = jpeg base64 javascript 

var image = new Image();
image.src = 'data:image/png;base64,iVBORw0K...';
document.body.appendChild(image);

---

var url = document.getElementById('myImg').getAttribute('src')
var xmlHTTP = new XMLHttpRequest();
xmlHTTP.open('GET', url, true);
xmlHTTP.responseType = 'arraybuffer';
xmlHTTP.onload = function(e) {
  var arr = new Uint8Array(this.response);
  var raw = String.fromCharCode.apply(null,arr);
  var b64 = btoa(raw);
  var dataURL="data:image/png;base64," + b64;
  console.log(b64)
};
xmlHTTP.send();
Nahlásit jako SPAM
IP: 2001:718:2601:258:5c83:ae62:8100:134f...–
Lolcoman
~ Anonymní uživatel
4 příspěvky
24. 11. 2021   #5
-
0
-

#4 peter
Tak jsem zkoušel to první nevím kde získat tu hodnotu pro src, zkoušel jsem to vyselectovat pomocí objektu  

JSON.parse(response[i])

a pak .value ale nic, i tu druhou metodu jsem zkoušel, ale ta mi prostě nepřidá to b64, já ty obrázky totiž neposílám v binary-date ale rovnou už převedené na Image, takže bude lepší do dát do array v binaray-date?

Nahlásit jako SPAM
IP: 78.80.26.–
Lolcoman0
Duch
24. 11. 2021   #6
-
0
-
Nahlásit jako SPAM
IP: 94.74.226.–
Lolcoman0
Duch
24. 11. 2021   #7
-
0
-

Nakonec "nejspíš" vyřešeno změnou v C# převodem byte[] na string64, a vložení do List <string>, děkuji za to base64 a pomoc  

string imgString = Convert.ToBase64String(imgArray);
Nahlásit jako SPAM
IP: 94.74.226.–
peter
~ Anonymní uživatel
4014 příspěvků
25. 11. 2021   #8
-
0
-

Njn, kdyz ty mu davas takhle komplexni objekt, to se pak neni cemu divit :) Zkus tam dat

console.log(response[i].propertyitems[0].value) // nebo
console.log(JSON.stringify(response[i].propertyitems[0].value))

Jinak, podle obrazku to vypada, ze to mas prekodovane na base64. Do src by to mozna fungovalo

img.src = "data:image/jpeg;base64," + response[i].propertyitems[0].value;
// ale, to neni jiste, by se muselo zkusit

Kazdopadne, jak pises, zmenil jsi vystup, to je lepsi reseni.

Nahlásit jako SPAM
IP: 193.84.207.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 7 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý