Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Dosya content type bulma
#1
Arkadaşlar merhaba.
Delphide yazdığım uygulamanın web tarafı için farklı platformda web arayüzü yapılıyor.
Delphi tarafından servera kullanıcı dosyalar kaydediyor ve bu dosyaları daha sonra webden başkaları girip bakıyor.
Yanlız şöyle bir şey var. Dosya isimlerinin tutulduğu tabloya dosya adı uzantısı dışında web tarafındaki yazılımcı arkadaşımız dosyanın content-type bilgisini de eklememi istiyor.
Bu bilgiyi opendialog componentinde bulamadım. Dosyanın content-type bilgisini nasıl elde edebilirim.
Cevapla
#2
Anladığım kadarıyla sunucu tarafını siz yazdınız. 
Eğer öyleyse göndereceğiniz verinin tipini aşağıdaki gibi belirleyebilirsiniz.

   

Örneğin
Response.ContentType := 'multipart/form-data';
Begin : = end / 2;
Cevapla
#3
(12-01-2023, Saat: 14:15)RAD Coder Adlı Kullanıcıdan Alıntı: Anladığım kadarıyla sunucu tarafını siz yazdınız. 
Eğer öyleyse göndereceğiniz verinin tipini aşağıdaki gibi belirleyebilirsiniz.



Örneğin
Response.ContentType := 'multipart/form-data';

Sunucu tarafını ben yazmadım. Aslında bir sunucuda yok.
Web sayfası direkt sql e bağlanabiliyor. Sql server va IIS sunucusu aynı lokasyondalar.
Benim yazdığım masa üstü programı direkt sql e bağlanıyor. Arada herhangi bir sunucu vs yok.
Kullanıcının seçtiği dosyanın content type nı bulmam gerekiyor.
Cevapla
#4
Merhaba
Kullanıcıların gönderdiği dosya tiplerinde bir standart var mıdır?

En azından text, application, image, audio, video vb. temel tipleri belli midir?

Eğer cevabınız evet ise spesifik olarak sadece dosya uzantısı yeterli geliyorsa temel tipiniz yazıp slash koyup yanına yıldız koymanız kafidir.

text/*
audio/*
video/*

gibisinden.

Ama jpeg, png vb detay lazım geliyorsa ve uzantısı da sizin için yeterli değilse emin olmak için binary header okuyup dosya tipi şablonunu kontrol etmek isteyebilirsiniz.

İnternetten bu tip listesini bulabilirsiniz. Web arayüzü yapan arkadaşınıza tam olarak ne istediğini sorarsanız zaten cevabı vetecektir. Çünkü bu mime type ne için kullanacağını (önizleme, player, thumbnail oluşturma, icon belirleme vb) ne kadar derin bir detay gereğini ancak o bilir ve söyler.
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#5
İlk mesajınızı okuduğumda HTTP üzerinden dosya gönderirken sorun yaşadığınızı düşündüm. Fakat daha sonraki mesajınızda yanlış anlamadıysam, server 'a dosya paylaşımı yapar gibi kopyama yapıyor ardından bu dosyanın adını SQL Server 'a yazıyorsunuz. Bu durumda Muharrem Bey 'in mesajında belirtiği gibi dosya uzantısı üzerinden Mime Types tablosunu kullanarak ilgili uzantının MIME karşılığını SQL Server daki tablo alanına yazacaksınız. Bu, sunucudan daha çok istemci taraf için gereklidir aslında. Ancak bu şekilde web server 'dan talep edilen sayfanın web tarayıcılar tarafından nasıl yorumlanacağı belirlenebilir. Web sunucudan talep edilen .pdf uzantılı bir dosyanın ekseriyetle direk görüntüleme modunda açılması gibi. MIME tablosunu Mozilla 'dan temin edebilirsiniz.
Cevapla
#6
(13-01-2023, Saat: 12:21)delphi.developer Adlı Kullanıcıdan Alıntı: İlk mesajınızı okuduğumda HTTP üzerinden dosya gönderirken sorun yaşadığınızı düşündüm. Fakat daha sonraki mesajınızda yanlış anlamadıysam, server 'a dosya paylaşımı yapar gibi kopyama yapıyor ardından bu dosyanın adını SQL Server 'a yazıyorsunuz. Bu durumda Muharrem Bey 'in mesajında belirtiği gibi dosya uzantısı üzerinden Mime Types tablosunu kullanarak ilgili uzantının MIME karşılığını SQL Server daki tablo alanına yazacaksınız. Bu, sunucudan daha çok istemci taraf için gereklidir aslında. Ancak bu şekilde web server 'dan talep edilen sayfanın web tarayıcılar tarafından nasıl yorumlanacağı belirlenebilir. Web sunucudan talep edilen .pdf uzantılı bir dosyanın ekseriyetle direk görüntüleme modunda açılması gibi. MIME tablosunu Mozilla 'dan temin edebilirsiniz.

Hocalarım yorumlarınız için çok teşekkür ederim. Mozilladan bu listeyi indirip bi tabloya bastım. Dosyanın uzantısına göre bu tablodan search edip ilgili content type buluyorum ve bunu kullanıyorum. Mükemmel çalıştı.
Cevapla
#7
@tuna problemini çözmüş ama başkalarının işine yarayabilir...

Delphi 10.2 ile birlikte gelen TMimeTypes kullanılabilir:
uses System.Net.Mime;

procedure TForm2.Button1Click(Sender: TObject);
var
 mTypes: TMimeTypes;
 aType: string;
 aKind: TMimeTypes.TKind;
begin
 if OpenDialog1.Execute then
 begin
   mTypes := TMimeTypes.Create;
   try
     mTypes.AddDefTypes; // varsayılan olarak tanımlanmışları kullanmak için
     mTypes.AddOSTypes; // işletim sisteminden almak için
     if mTypes.GetFileInfo(OpenDialog1.FileName, aType, aKind) then
       ShowMessage(aType);
   finally
     mTypes.Free;
   end;
 end;
end;
There's no place like 127.0.0.1
WWW
Cevapla
#8
(18-01-2023, Saat: 19:14)SimaWB Adlı Kullanıcıdan Alıntı: @tuna problemini çözmüş ama başkalarının işine yarayabilir...

Delphi 10.2 ile birlikte gelen TMimeTypes kullanılabilir:
uses System.Net.Mime;

procedure TForm2.Button1Click(Sender: TObject);
var
 mTypes: TMimeTypes;
 aType: string;
 aKind: TMimeTypes.TKind;
begin
 if OpenDialog1.Execute then
 begin
   mTypes := TMimeTypes.Create;
   mTypes.AddDefTypes; // varsayılan olarak tanımlanmışları kullanmak için
   mTypes.AddOSTypes; // işletim sisteminden almak için
   try
     if mTypes.GetFileInfo(OpenDialog1.FileName, aType, aKind) then
       ShowMessage(aType);
   finally
     mTypes.Free;
   end;
 end;
end;

Çok teşekkürler hocam. Bu çok daha iyimiş. Deneme yapıp kodu buna çeviricem. Her dosya ekleme işleminde ekstra sql sorgusu yapmaktan kurtarıyor.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  SQL Table Type parametre gecisi hakkında (Çözüldü) adelphiforumz 1 397 09-04-2026, Saat: 15:53
Son Yorum: adelphiforumz
  Projeye dosya olarak eklenmiş dosyanın içeriğini okumak yhackup 9 2.324 18-04-2025, Saat: 21:39
Son Yorum: bakyuz
  Windows Explorer dan delphi formuna dosya Drag&Drop işlemi örneği adelphiforumz 1 714 23-01-2025, Saat: 15:16
Son Yorum: yhackup
  idftp dosya kontrolü ercanskose 2 955 30-10-2024, Saat: 16:15
Son Yorum: ercanskose
Lightbulb Delphi 7zip Password lü Dosya Sıkıştırma ve Açma + Bonus RAR5 Desteği frmman 6 2.198 16-03-2024, Saat: 17:55
Son Yorum: delphi.developer



Konuyu Okuyanlar: 1 Ziyaretçi