C#da yazılmış webservise delphiden dosya gönderme
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
-
- Üye
- Mesajlar: 6
- Kayıt: 15 Eki 2016 02:11
C#da yazılmış webservise delphiden dosya gönderme
Merhabalar,
C# da yazılmış webservise delphi den binary olarak dosya göndereceğiz. C# tarafında memorystream ile yapmaya çalıştık fakat delphi c# ın memorystream in göremedi yani delphi deki gibi loadfromstream yapamıyorum. Daha önce delphi den c# a dosya gönderen arkadaşlar varsa yardımlarınızı bekliyorum. C# projesini de biz yazıyoruz o yüzden istediğimiz gibi değiştirebiliriz fonksyonu. Memorystream yerine byte array gibi şeylerde kullanabiliriz. Bu konuda tecrübe sahibi arkadaşlar var mı?
Saygılarımla
C# da yazılmış webservise delphi den binary olarak dosya göndereceğiz. C# tarafında memorystream ile yapmaya çalıştık fakat delphi c# ın memorystream in göremedi yani delphi deki gibi loadfromstream yapamıyorum. Daha önce delphi den c# a dosya gönderen arkadaşlar varsa yardımlarınızı bekliyorum. C# projesini de biz yazıyoruz o yüzden istediğimiz gibi değiştirebiliriz fonksyonu. Memorystream yerine byte array gibi şeylerde kullanabiliriz. Bu konuda tecrübe sahibi arkadaşlar var mı?
Saygılarımla
Re: C#da yazılmış webservise delphiden dosya gönderme
Base64 ikili verilerin (İngilizce: binary data) sadece ASCII karakterlerini kullanan ortamlarda (yani web service vb.) iletilmesine ve saklanmasına olanak tanıyan bir kodlama şemasıdır.Yani bir dosyayı base64 kodlamasını kullanarak string veriye çevirebilir ve alıcı tarafta tekrar eski şekline getirebilirsiniz. E-posta içerisine koyduğumuz dosya ekleri de aynı sistemle e-postanın içerisine yerleştirilmektedir.
Bir doayayı base64 olarak kodlamak için:
Base64 olarak string hale getirilmiş bir dosyayı tekrar eski haline getirmek için aşağıdaki kodu kullanabilirsiniz. Sizin senaryonuzda bu işlemi C# tarafında yapmanız gerekir. Ben yine de Delphi'de nasıl yapıldığını yazıyorum.
Bir doayayı base64 olarak kodlamak için:
Kod: Tümünü seç
function EncodeFile(const FileName: string): AnsiString;
var
stream: TMemoryStream;
begin
stream := TMemoryStream.Create;
try
stream.LoadFromFile(Filename);
result := EncodeBase64(stream.Memory, stream.Size);
finally
stream.Free;
end;
end;
Kod: Tümünü seç
procedure DecodeFile(const Base64str: AnsiString; const FileName: string);
var
stream: TBytesStream;
begin
stream := TBytesStream.Create(DecodeBase64(Base64str));
try
stream.SaveToFile(Filename);
finally
stream.Free;
end;
end;
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/)
-
- Üye
- Mesajlar: 6
- Kayıt: 15 Eki 2016 02:11
Re: C#da yazılmış webservise delphiden dosya gönderme
O zaman webservise string olarak veriyi vereceğiz webservis de bu veriyi decode edecek doğrumudur ?
-
- Üye
- Mesajlar: 6
- Kayıt: 15 Eki 2016 02:11
Re: C#da yazılmış webservise delphiden dosya gönderme
Peki boyut konusunda herhangi bir sınır var mı ? Ne kadar büyüklükte bir veri gönderebilirim ? Sonuçta string verinin belirli bir uzunluğu var.
Re: C#da yazılmış webservise delphiden dosya gönderme
Sanırım 2 GB sınır var. Ayrıca şuna dikkat etmelisiniz. 1 KB lik veriyo Base64 e çevirdiğiniz zaman boyutu 1 KB'den daha çok tutar. O yüzden 10 MB attachment (ek dosya) sınırı olan bir mail hesabına 7-8 MB lik dosya yüklediğimizde zaman zaman attachment boyutu aşıldı mesajı alabiliriz.
Zaten çok büyük dosyaları web service yoluyla göndermek web service in amacına çok uymaz.
Zaten çok büyük dosyaları web service yoluyla göndermek web service in amacına çok uymaz.
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/)
-
- Üye
- Mesajlar: 6
- Kayıt: 15 Eki 2016 02:11
Re: C#da yazılmış webservise delphiden dosya gönderme
Anladım teşekkür ederim. Base64stringe çevirip gönderdik maksimum 3mb lik dosya gönderebildik. Biz de byte array olarak gönderdik 8-9mb' a kadar destek sağladı şuanda. İlginiz için teşekkürler
Re: C#da yazılmış webservise delphiden dosya gönderme
Merhaba,
Hangi Delphi sürümünü kullanıyorsunuz?
Göndermek istediğiniz verinin bir üst limiti var mıdır?
Base64 şeklinde veri gönderir iken 3MB üzeri dosyalarda sorunun hangi tarafta (C#, Delphi) olduğunu tespit edebildiniz mi?
Hangi Delphi sürümünü kullanıyorsunuz?
Göndermek istediğiniz verinin bir üst limiti var mıdır?
Base64 şeklinde veri gönderir iken 3MB üzeri dosyalarda sorunun hangi tarafta (C#, Delphi) olduğunu tespit edebildiniz mi?
Re: C#da yazılmış webservise delphiden dosya gönderme
Servisde parametre olarak byte array kullanılmasını tavsiye ederim. byte data aktarmak için en iyi yöntem mtom protokolüdür. C# tarafında servisi mutlaka mtom destekleyecek şekilde yayınlayın. Delphi tarafında da vardır bu özellik diye düşünüyorum.
https://en.wikipedia.org/wiki/Message_T ... _Mechanism
Yine Delphi tarafında compression özelliğini aktif edin, C# bunu otomatik yaparken Delphi'de manuel olarak yönetmeniz gerekiyor. byte data sıkıştırayım servise öyle parametre geçeyim diyerek uğraşmayın, http prokolüne bırakın.
https://robertocschneiders.wordpress.co ... hi-client/
https://en.wikipedia.org/wiki/Message_T ... _Mechanism
Yine Delphi tarafında compression özelliğini aktif edin, C# bunu otomatik yaparken Delphi'de manuel olarak yönetmeniz gerekiyor. byte data sıkıştırayım servise öyle parametre geçeyim diyerek uğraşmayın, http prokolüne bırakın.
https://robertocschneiders.wordpress.co ... hi-client/