Resimleri veritabanına kaydetmek?
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
-
- Üye
- Mesajlar: 2
- Kayıt: 28 Ara 2011 08:13
Resimleri veritabanına kaydetmek?
Merhaba Arkadaşlar. Delphide Kumanda Stok Otomasyonu Yapıyorum. Yaptıgım Otomasyona Kumanda Resimlerini de Veritabanına Kaydetmek İstiyorum Fakat Hiçbir Bilgim Yok Bu Konuda. Veri Tabanı Olarak Acces Kullanıyorum. Resimi Nasıl Kaydedebileceğimi Söyleyebilecek Arkadaşların Yardımını Bekliyorum. Teşekkürler..
Re: Resimleri veritabanına kaydetmek?
Resimleri veritabanına kaydetmek yerine bir klasöre yazdır ve dosya yollarını da veritabanına kaydet, yoksa veritabanı zamanla çok büyük boyutlara ulaşır.
- greenegitim
- Üye
- Mesajlar: 713
- Kayıt: 28 Nis 2011 10:33
- Konum: İstanbul
Re: Resimleri veritabanına kaydetmek?
Konu açmak istemediğim için buradan yazayım dedim.orhancc yazdı:Resimleri veritabanına kaydetmek yerine bir klasöre yazdır ve dosya yollarını da veritabanına kaydet, yoksa veritabanı zamanla çok büyük boyutlara ulaşır.
Güzel bir yöntem bende öyle yapıyorum ama bir ayrıntı mesela programım çok kullanıcılı resimleri ana bilgisayardada kaydeden var diğer kullanıcılardada veri tabanına atmayıp yolu tutuğu için herkes kendi ilişkilendirdiği resmi görüyor bunu şu şekilde çözebiliyorum sadece
resimler resim klasöründe, resim klasörünü paylaşıma açıp her bilgisayarda
BU BATCH i çalıştırıyorum başka bir fikri önerisi olan varmı?
copy \\SERVER\RESIM\*.* C:\PROJE\RESIM\
copy C:\PROJE\RESIM\*.* \\SERVER\RESIM\
Mücadele güzelleştirir!
Re: Resimleri veritabanına kaydetmek?
Tüm resimleri ana bilgisayara kayıt edeceksin o zaman sıkıntı olmaz. Ana makine hem sql sunucu hem dosya sunucusu gibi çalışacak. Bankalarda merkez ve şube işlemlerini bu şekilde yapıyoruz sorun olmuyor.
- greenegitim
- Üye
- Mesajlar: 713
- Kayıt: 28 Nis 2011 10:33
- Konum: İstanbul
Re: Resimleri veritabanına kaydetmek?
O zaman şu şekilde olacak parametrik olarak serverin paylaşıma açık klasörü olacak dosya yazımına da açık olacak server var ise kayıtyolu \\SERVER\RESIM olacak ve oraya yazacak server kendiside görebilmesi için mecburen paylaşımdan görecek \\server diye ama bu sorun olmazmı biri gelip resimleri silede bilir?
Mücadele güzelleştirir!
Re: Resimleri veritabanına kaydetmek?
Klasöre sadece yazma ve değiştirme yetkisi verebilirsin, silme işlemi yapmayacaksan silme yetkisine zaten gerek yok.
Re: Resimleri veritabanına kaydetmek?
tavsiyem ilişkisel bir veri tabanı kullanmanız (RDBMS). Firebird, mysql, msspl gibi. Veri tabanınızda sadece resimleri tutacağınız bir tablo ve resimler için bir blob alan açın. Stream komutları kullanarak bu alana resim yükleyip okuyabilirsiniz. Devexpress companent setinde hayır dbimage nesneleride mevcut. Accsessde de blob alan özelliği var ancak resim gömünce dosya çok büyüyeceğinden çok fazla performans kaybı olur. rmdbs de ise bir fark hissetmezsiniz. Hemde programınız internetten bile kullanılabilir. Hiç bir klasörü paylaşıma açmak gerekmediğinden virüsler, yanlış eylemler, paylaşım bozulmaları daha az olur.
Re: Resimleri veritabanına kaydetmek?
C. Sunguray
csunguray at netbilisim.kom
Net Bilişim Hizmetleri
Sıradan her programcı bilgisayarın anlayabileceği kodlar yazabilir.
Sadece iyi programcılar insanların da anlayabileceği kodlar yazarlar.
Martin Fowler (http://martinfowler.com/)
csunguray at netbilisim.kom
Net Bilişim Hizmetleri
Sıradan her programcı bilgisayarın anlayabileceği kodlar yazabilir.
Sadece iyi programcılar insanların da anlayabileceği kodlar yazarlar.
Martin Fowler (http://martinfowler.com/)
Re: Resimleri veritabanına kaydetmek?
geçmişte benimdi böyle bi çalışmaya ihtiyacım olmuştu sağolsun forumdaki arkadaşların yardımıyla halletmiştim kodlar aşağıdaki gibi bi tane okuma bi tanede vt ye yazma proceduru oluşturdum
uses kısmına jpeg i eklemeyi unutma yoksa hata verecektir
vt ye yazmak için bu kodu kullanıyorum
vt den okuyum göstermek içinde bu kodu kullanıyorum
kolay gelsin
uses kısmına jpeg i eklemeyi unutma yoksa hata verecektir
vt ye yazmak için bu kodu kullanıyorum
Kod: Tümünü seç
Var
fs : TFileStream;
bs : TStream;
begin
if Button = nbPost Then
Begin
DataModule1.YemekListesi.Edit;
if Image1.Picture.Graphic = nil then
begin
datamodule1.YemekListesi.FieldByName('RESIM').AsString := '';
end;
if Image1.Picture.Graphic <> nil then
begin
if resimac.FileName = '' then
Begin
Image1.Picture.SaveToFile('temp.jpg');
resimac.FileName := 'temp.jpg';
End;
fs := TFileStream.Create(resimac.FileName, fmOpenRead);
bs := TStream(datamodule1.YemekListesi.CreateBlobStream(datamodule1.YemekListesi.FieldByName('RESIM'), bmread));
bs.CopyFrom(fs, 0);
bs.Free;
fs.Free;
end;
End;
end;
vt den okuyum göstermek içinde bu kodu kullanıyorum
Kod: Tümünü seç
var
jpg:TJpegImage;
begin
if datamodule1.YemekListesi.FieldByName('resim').AsString <> '' then
begin
jpg := TJpegImage.Create;
jpg.LoadFromStream(datamodule1.YemekListesi.CreateBlobStream(datamodule1.YemekListesi.FieldByName('resim'), bmRead));
Image1.Picture.Graphic:=jpg;
jpg.Free;
end
else
begin
image1.Picture.Graphic := nil;
end;
end;
- greenegitim
- Üye
- Mesajlar: 713
- Kayıt: 28 Nis 2011 10:33
- Konum: İstanbul
Re: Resimleri veritabanına kaydetmek?
veritabanına kaydetmek yerine şöyle bir mantık oluşturdum herkaydın bir id si var autoınc bir alan resmi resimler klasörüne atarken idno.jpg olarak atıyor
idno yu dbedite bağlayıp change olayında da resimler klasöründe idno.jpg varmı diye kontrol etiriyorum var ise resmi getir yok ise bos.jpg resmini getiriyor.
idno yu dbedite bağlayıp change olayında da resimler klasöründe idno.jpg varmı diye kontrol etiriyorum var ise resmi getir yok ise bos.jpg resmini getiriyor.
Mücadele güzelleştirir!
Re: Resimleri veritabanına kaydetmek?
müşterinin programdan ne istediği çok önemli. Bulduğunuz çözüm tek kullanıcı programlar için yeterli. Programı ilerde çok kullanıcılı yapacaksanız tavsiyeleri işin başındayken uygulamanız ilerde işinizi kolaylaştıracaktır.
- greenegitim
- Üye
- Mesajlar: 713
- Kayıt: 28 Nis 2011 10:33
- Konum: İstanbul
Re: Resimleri veritabanına kaydetmek?
Tabi bu geçici bir çözüm şimdilik çok kullanıcılarda resim yolunu parametrik olarak \\server\resimler şeklinde olacak işin veritabanı boyutuna geçince bi çok kontrol yapılacak çözünürlük resim boyutu vs. vs.mkysoft yazdı:müşterinin programdan ne istediği çok önemli. Bulduğunuz çözüm tek kullanıcı programlar için yeterli. Programı ilerde çok kullanıcılı yapacaksanız tavsiyeleri işin başındayken uygulamanız ilerde işinizi kolaylaştıracaktır.
Mücadele güzelleştirir!