Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
WebModule Multipart File Upload İşlemi
#1
Merhaba,

Uzun bir aradan sonra, Python, Flutter, C#'dan sonra yeniden Delphi tarafına gelmekten dolayı mutluluk duyuyorum, forumdaki arkadaşlarla zaten hep irtibat halindeydik, denedik gördük diyelim şimdilik. Blush


Aşağıdaki python kodu ile yazdığım backend projesini Delphi tarafında WebModule kullanarak çözmeye çalışıyorum fakat birçok yolu denememe rağmen başarılı sonuca ulaşamadım, yeniden öğrenme sürecine başlıyorum.

Yapmak istediğim şey; Aşağıdaki resimde de görüleceği üzere herhangi bir dosyayı post metodu ile gönderip bunu delphi tarafında webmodule ile okuyup C:\Temp klasörüne dosyanın uzantısı ne ise aynı uzantıda fakat başka bir isimde kaydetmek.

*Buraya sormadan önce çok fazla araştırdım ChatGPT, Claude de kullandım fakat sonuca ulaşamadım.
*Ekte Postman gönderim ekran görüntüsü ve Delphi koduna ulaşabilirsiniz.


Ek Dosyalar Resimler
   

.zip   D_WebModule_Upload.zip (Dosya Boyutu: 27 KB / İndirme Sayısı: 8)
Cevapla
#2
(09-12-2024, Saat: 22:55)pro_imaj Adlı Kullanıcıdan Alıntı: Merhaba,

Uzun bir aradan sonra, Python, Flutter, C#'dan sonra yeniden Delphi tarafına gelmekten dolayı mutluluk duyuyorum, forumdaki arkadaşlarla zaten hep irtibat halindeydik, denedik gördük diyelim şimdilik. Blush


Aşağıdaki python kodu ile yazdığım backend projesini Delphi tarafında WebModule kullanarak çözmeye çalışıyorum fakat birçok yolu denememe rağmen başarılı sonuca ulaşamadım, yeniden öğrenme sürecine başlıyorum.

Yapmak istediğim şey; Aşağıdaki resimde de görüleceği üzere herhangi bir dosyayı post metodu ile gönderip bunu delphi tarafında webmodule ile okuyup C:\Temp klasörüne dosyanın uzantısı ne ise aynı uzantıda fakat başka bir isimde kaydetmek.

*Buraya sormadan önce çok fazla araştırdım ChatGPT, Claude de kullandım fakat sonuca ulaşamadım.
*Ekte Postman gönderim ekran görüntüsü ve Delphi koduna ulaşabilirsiniz.


Merhaba  ,
WebModule deki OnAction içine düşen Request:TWebRequest nesnesinin Files özelliğinden dosyalara ulaşabilmen lazım,

Örn ; istek içindeki ilk dosyayı kaydetmek için ,
procedure TWebModule1.WebModule1UploadAction(Sender: TObject;
  Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
begin
 TMemoryStream(Request.Files[0].Stream).SaveToFile('c:\deneme.jpg');
end;

Fikir vermiştir umarım.
iyi çalışmalar.
Cevapla
#3
(09-12-2024, Saat: 22:55)pro_imaj Adlı Kullanıcıdan Alıntı: Merhaba,

Uzun bir aradan sonra, Python, Flutter, C#'dan sonra yeniden Delphi tarafına gelmekten dolayı mutluluk duyuyorum, forumdaki arkadaşlarla zaten hep irtibat halindeydik, denedik gördük diyelim şimdilik. Blush

Flutter işleri yalan dolan abi ne varsa delphi de var Smile
WWW
Cevapla
#4
Merhaba,

Bu konuda çokça araştırma yaptım ve bu işte uzman arkadaşlardan da destek almam rağmen çözemedim.
Dosya göndermeme rağmen  Files.count = 0 geliyor. (Aynı postman çağrısını Python ile yazdığım backend'e gönderdiğimde dosyayı okuyabildiğini teyit ediyorum.), WebModule projesi ile dosya alan bunun deneyimleyen var mı acaba.

CountFilesInFormData(Request) > 0


@vkamadan cevap için teşekkürler önerdiğin şekilde olmadı. 
@yhackup Delphi konusunda nasrettin hocanın şu hikayesi gibi olabilir mi!

Bir gün cemaat Nasrettin hocaya dua ediyormuş Allah'ım hocamın dertlerini gider diye, bunu duyan hoca, aman ne yapıyorsunuz demiş, ben şu anki dertlerimle yaşamayı öğrendim şimdi bu dertler giderse yerine yenileri gelecek onlara alışamam belki demiş.  Smile
Cevapla
#5
Web Broker ile upload işlemleri için uses bloğuna Web.ReqMulti birimini ekleyerek tekrar deneyin. Web.ReqMulti birimi sınıfları sunucuya upload edilen stream datalarının işlenmesini sağlar. Web Broker upload işlemi örneği için aşağıdaki makale linkini ayrıca inceleyebilirsiniz.

https://www.delphican.com/showthread.php?tid=7625
Cevapla
#6
(11-12-2024, Saat: 16:53)delphi.developer Adlı Kullanıcıdan Alıntı: Web Broker ile upload işlemleri için uses bloğuna Web.ReqMulti birimini ekleyerek  tekrar deneyin. Web.ReqMulti birimi sınıfları sunucuya upload edilen stream datalarının işlenmesini sağlar. Web Broker upload işlemi örneği için aşağıdaki makale linkini ayrıca inceleyebilirsiniz.

https://www.delphican.com/showthread.php?tid=7625

Cevap için teşekkürler çözüldü. IDE bunu bir şekilde bildirseydi ilgili kütüphane uses bloğuna eklenmeyince derlenirken belirtseymiş. Aynı kodu bu uses bloğunu eklemeden çalıştırınca aldığım hata

Alıntı:Access violation at address 00B12A1D in module 'project1.exe' (offset 4D2A1D). Read of address 00000000

Sizin belirttiğiniz şekilde uses bloğuna Web.ReqMulti  ekleyince sorun çözmüş oldu.
procedure TWebModule1.WebModule1UploadAction(Sender: TObject;
  Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
begin
TMemoryStream(Request.Files[0].Stream).SaveToFile('C:\Temp\deneme.jpg');
end;
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Windows Explorer dan delphi formuna dosya Drag&Drop işlemi örneği adelphiforumz 1 572 23-01-2025, Saat: 15:16
Son Yorum: yhackup
  unidbgird tek enterde edit ve post ıslemi mehmet07 1 540 05-01-2025, Saat: 15:44
Son Yorum: mehmet07
Question delphi ile kernel mode file hooking-yardım eroniko 7 1.363 24-08-2024, Saat: 00:34
Son Yorum: eroniko
  Minimize İşlemi hakkında adelphiforumz 2 1.033 24-06-2024, Saat: 11:50
Son Yorum: adelphiforumz
  [Çözüldü] - WSDL importer / Unable to load WSDL File/Location Hatası Mesut 25 6.906 04-06-2024, Saat: 22:13
Son Yorum: abdullahBuyuk



Konuyu Okuyanlar: 1 Ziyaretçi