Skocz do zawartości

Sfera problem z dodawaniem zdjęć.

Polecane posty

Cześć,

napotkałem mały problem z dodawaniem zdjęć oraz aktualizacją zdjęć poprzez nexo SDK.

 

Odczyt zdjęcia realizuje kodem:

            IAsortymenty asortyment = Sfera.PodajObiektTypu<IAsortymenty>();
            Asortyment aso = asortyment.Dane.Wszystkie().Where(a => a.Symbol == "11").Single();
            using (IAsortyment towar3 = asortymenty.Znajdz(aso))
            {

                foreach (var md in aso.MediaDokumenty)
                {
                    byte[] dane = md.MediaDokument.DokumentZawartosc.Dane;
                    File.WriteAllBytes(string.Format(@"c:\subiektotest\dane_{0}_{1}_{2}.{3}", aso.Symbol, md.Numer, md.MediaDokument.Nazwa, md.MediaDokument.Typ), dane);

                }
                Console.WriteLine("Poprawnie zapisano fotke");
            }

Odczyt zdjęcia i zapis do pliku działa prawidłowo.

Chciałem dokonać zapisu zdjęcia do bazy poprzez:

md.MediaDokument.DokumentZawartosc.Dane

 

             public static byte[] converter(Image x)
        {
            ImageConverter _imageConverter = new ImageConverter();
            byte[] xByte = (byte[])_imageConverter.ConvertTo(x, typeof(byte[]));
            return xByte;
        }



            ISzablonyAsortymentu szablony = Sfera.PodajObiektTypu<ISzablonyAsortymentu>();
            IAsortymenty asortymenty = Sfera.PodajObiektTypu<IAsortymenty>();
            IAsortyment nowyTowar = asortymenty.Utworz();
            ICenniki cenniki = Sfera.PodajObiektTypu<ICenniki>();
            ICennik cennik = cenniki.Utworz();
            IPozycjeCennika pozycjeCennika = Sfera.PodajObiektTypu<IPozycjeCennika>();
            Podmiot alegro = podmioty.Dane.Wszystkie().Where(pdm => pdm.NazwaSkrocona == "Maria Malinowska").FirstOrDefault();
              
			nowyTowar.WypelnijNaPodstawieSzablonu(szablony.DaneDomyslne.Towar);
            nowyTowar.AutoSymbol();
            nowyTowar.Dane.Nazwa = "Produkt";
            nowyTowar.Dane.Opis = "Działa?";
            nowyTowar.Dane.JednostkaSprzedazy.Masa = 10m;
            var kod = new KodKreskowy() { Kod = "6684666666222" };
            nowyTowar.Dane.PodstawowaJednostkaMiaryAsortymentu.KodyKreskowe.Add(kod);
            nowyTowar.Dane.PodstawowaJednostkaMiaryAsortymentu.PodstawowyKodKreskowy = kod;
            nowyTowar.Dostawcy.Dodaj(alegro);
            nowyTowar.Dane.DaneAsortymentuDostawcyPodstawowego.Symbol = "11";
            foreach (PozycjaCennika poz in nowyTowar.Dane.PozycjeCennika)
            {
                IPozycjaCennika jestPozycja = pozycjeCennika.Znajdz(poz);
                switch (jestPozycja.Dane.Cennik.PoziomCen.Nazwa)
                {
                    case "Podstawowy":
                        jestPozycja.Dane.CenaNetto = 999.99m;
                        break;
                }
            }

            foreach (var md in nowyTowar.Dane.MediaDokumenty)
            {
                Image photo = Image.FromFile("photo.jpg");
                md.ZdjecieGlowne = true;
                md.MediaDokument.Nazwa = "Fotka.jpg";
                md.MediaDokument.Typ = "jpg";
                md.MediaDokument.DokumentZawartosc.Dane = converter(photo);
            }

            if (nowyTowar.Zapisz())
                Console.WriteLine("Poprawnie zapisano nowy towar");
            else
                Console.WriteLine("Coś nie działa");

Podczas kompilacji nie zostaje zwrócony błąd, zdjęcie się nie dodaje.

Podczas próby aktualizacji zdjęcia otrzymuje błąd:

Cytat

Wystąpił nieobsługiwany wyjątek typu „InsERT.Mox.DataAccess.UnsponsoredModificationException” w InsERT.Mox.EntityFrameworkSupport.dll
Modyfikacja pola Dane encji DokumentZawartosc nie powiodła się, ponieważ albo encja nie została przyłączona do obiektu kontrolującego modyfikację danych (biznesowego), albo ten, do którego jest przyłączona nie pozwala na zmianę tego konkretnego pola.

 

Edytowane przez Krzysztof Paździorny
Link to postu
4 godziny temu, Jerzy Dudra napisał:

Niestety dostęp sferyczny do zdjęć nie jest obecnie obsługiwany.

Taka możliwość pojawi się w jednej z najbliższych wersji.

W takim razie, jest jakiś sposób na masowy upload zdjęcia dla każdego towaru w bazie ?

Oraz dlaczego dostęp sferyczny jest możliwy do pobrania zdjęcia , odczytu jego bajtowej postaci.

Edytowane przez Krzysztof Paździorny
Link to postu

API do biblioteki załączników jest i można go użyć do dodania dowolnych plików np. obrazków. to towarów.

Gdy pojawi się API do zdjęć, będzie można napisać rozwiązanie, które "przepisze"

obrazki z biblioteki załączników do zdjęć towarów.

Być może biblioteka załączników okaże się wystarczająco dobra dla Pana wdrożenia.

Link to postu
  • 2 tygodnie później...

Jak pisałem wcześniej, nowe API do dodawania zdjęć pojawi się w jednej z najbliższych wersji.

 

Rozwiązanie opisane tutaj:

 

również powinno zadziałać.

 

using InsERT.Mox.BibliotekaDokumentow.ObiektyBiznesowe;
...


        public void DodajZdjecie(IAsortyment towar, string nazwa, string typ, byte[] content)
        {
            var mediaDokumenty = towar.MediaDokumenty();
            _ = mediaDokumenty.ImportujMediaDokument(content, nazwa, typ);

            return towar;
        }
 

  • Dziękuję 1
Link to postu
×
×
  • Dodaj nową pozycję...