Clienttan Server a resim kaydetme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
delphist
Üye
Mesajlar: 595
Kayıt: 05 Oca 2005 04:34

Clienttan Server a resim kaydetme

Mesaj gönderen delphist »

S.a. arkadaşlar client ve server şeklinde yazılım var..Client tarafında kullanıcının seçtiği resmi server tarafında gerekli path kaydetmek istiyorum ve ayrıca bu path database kaydederek resmin çağrılmasını istiyorum...Bunu nasıl yapabiliriz...Tşk...
mkysoft
Kıdemli Üye
Mesajlar: 3110
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Mesaj gönderen mkysoft »

bunu genelde şu şekilde yaparlar. programın kurulu olduğu klasörü yazma hakkıyla birlikte paylaşıma açarlar. program oradan çalıştırılır. resim kaydederken resim isimli bir klasöre müşteri numarası ile kaydedilir, böylece databasede path tutmaya gerek kalmaz. ama ben tercih etmiyorum. neden resimleri database'de tutmuyorsun? resimler için bir tablo oluştur. böylece diğer verilerini etkilemez. sadece yedek alırken problem olacaktır.
Kullanıcı avatarı
delphist
Üye
Mesajlar: 595
Kayıt: 05 Oca 2005 04:34

Mesaj gönderen delphist »

Hocam peki ben sql server kulanıyorum ve image tipinde alan açtım ben dwg dosyaaları ve resim dosyalarını buraya kayıt yapmak istiyorum. Ama dosyalar jpg resim olanlar...ve ve ayrıca dwg bunları nasıl kaydedembilirim..
Kullanıcı avatarı
delphist
Üye
Mesajlar: 595
Kayıt: 05 Oca 2005 04:34

Mesaj gönderen delphist »

arkadaşlar şimdiye kadar yapmadığım birşey ve ben hala resimi database kaydetmeyi beceremedim...

Kod: Tümünü seç

var
jpgresim: Tjpegimage;
blobalan: Tadoblobstream;
hafiza: Tmemorystream;

begin
if SavePictureDialog1.Execute then
 begin
 cxDBImage1.Picture.SaveToFile(SavePictureDialog1.FileName);
  with dmstok.STRESIMQ do
    begin 
      Append; 
      FieldValues['RESIM_KODU']:=comboresimkodu.Text;
      FieldValues['STOK_KODU']:=edtstokkodu.Text;
      jpgresim:=TJpegImage.Create; 
      jpgresim.assign(cxDBImage1.Picture.Bitmap);
      hafiza:=TMemoryStream.Create; 
      jpgresim.savetostream(hafiza); 
      blobalan:=TADOBlobStream.Create(TGraphicField(FieldByName('resim')), bmWrite); 
      blobalan.copyfrom(hafiza,0); 
      blobalan.free; 
      hafiza.free; 
      jpgresim.free; 
      post; 
    end; 

Mikrochip arkadaşımızın yazdığı kodlardan yararlanmaki istediğim ama sql server da tanımladığım image alanına bu kod kayıt yapıyor database ama null kayıt...içinde bir şey yok....Yardımlarınızı bekliyorum....Eğer database kayıt yapamıyorsak client tarafında herhangi bir clienttan gönderilen resmi serverdaki bir klasöre kaydedip pathinide database kaydedip çağrıldığı zaman programdan gösterme olayıda olabilir ikiside benim işimi görüyor ama beceremedim...Teşekkürler
mkysoft
Kıdemli Üye
Mesajlar: 3110
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Mesaj gönderen mkysoft »

alanı image değilde blob olarak tanımla. böylece istediğin herşeyi atabilirsin. çizim dosyalarını filestream kullanarak oku. blob alanlarında stream özelliği vardır tabloda. aşağıda basit bir örnek bulunuyor.

Kod: Tümünü seç

var
  blob,fs: TStream;
begin
  tablo_gorunum.Insert;
  blob := tablo_gorunum.CreateBlobStream(tablo_gorunum.FieldByName('gorunum'), bmWrite);
  try
    blob.Seek(0, soFromBeginning);
    fs := TFileStream.Create('temp.ini', fmOpenRead or fmShareDenyWrite);
    try
      blob.CopyFrom(fs, fs.Size)
    finally
      fs.Free
    end;
  finally
    blob.Free
  end;
  tablo_gorunum.Post;
  close;
kolay gelsin. dosyaları geri almak içinde bmWrite yerine bmRead kullanabilirsin.
Kullanıcı avatarı
delphist
Üye
Mesajlar: 595
Kayıt: 05 Oca 2005 04:34

Mesaj gönderen delphist »

Hocam teşekkür ederim cevabın için fakat mssql server da blob alanın karşıtı olan alan hangisi....Binary alan mı...Blob diye bi veri çeşidi yok çünkü...
mkysoft
Kıdemli Üye
Mesajlar: 3110
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Mesaj gönderen mkysoft »

büyük ihtimalle binary' dir. Ben sevmende M$ veri tabanını. Neyse daha fazla yorum yapmayayım.
Cevapla