Merhaba Arkadaşlar;
Bilgisayardan resim dosyasını php ye post verisi olarak göndermek istiyorum. Bu konu hakkında uzunca bir araştırma yaptım ve Base64 kodlama ile göndrebileceğimi çözdüm.
Kısaca, bir php ye post verisi olarak resmin Base64 kodunu Delphi ile göndericem. Php ile de o kodu herhangi bir yere yazdırıcam. Php tarafını hallettim. Ancak Delphi de resmi komple base64 yapamadım. Siteyi ve genel olarak google da çok arama yaptım ancak String verisini sürekli olarak base64 yapmışlar.
Yardım edebilir misiniz? Teşekkür ederim.
Resim dosyasını Base64 ile göndermek
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Re: Resim dosyasını Base64 ile göndermek
Base64 ile ugraşmana gerek yok TIdMultiPartFormDataStream bileşeniyle her türlü verini php ye gönderebilirsin.
Basit bir örnek:
Önce bileşenleri oluşturuyoruz.
Normal string bilgileri ekleme
Jpg resim bilgileri ekleme
Post değişkenlerine tüm bilgiler eklenince, artık siteye gönderebiliriz.
İşimiz bittikten sonra bileşenleri free edebiliriz.
Kod a try finally bölümlerini eklemeyi de unutma.
Bu şekilde çalışır, ama bir problem olursa nesneler dogru şekilde free edilmeyebilir.
Basit bir örnek:
Önce bileşenleri oluşturuyoruz.
Kod: Tümünü seç
sendweb:=TidHttp.Create(Self);
post1 := TIdMultiPartFormDataStream.Create;
Kod: Tümünü seç
post1.AddFormField('user', kullanici);
post1.AddFormField('pass',sifre);
Kod: Tümünü seç
ms:=TMemoryStream.Create;
jpg :=TJpegImage.Create;
jpg.Assign(ibdataset1.Fieldbyname('RESIM'));
jpg.SaveToStream(ms);
post1.AddObject('picture','image/jpeg',ms,'resimadi.jpg');
jpg.Free;
Kod: Tümünü seç
sendweb.Request.ContentType := post1.RequestContentType;
post1.Position := 0;
result:=sendweb.Post('www.sitem.com/yukle.php',post1);
Kod: Tümünü seç
post1.Free;
sendweb.Free;
Bu şekilde çalışır, ama bir problem olursa nesneler dogru şekilde free edilmeyebilir.
Re: Resim dosyasını Base64 ile göndermek
Deniyorum, Çok saol kardeşim..
Re: Resim dosyasını Base64 ile göndermek
site üzerinden php ile veri gönderdiğimde düzgün kaydediyor ancak bu kodlarla nedense gönderim işleminden sonra 2 byte sadece dosya ismi yaratıyor. Neden olur ki?
Kodlar şunlar;
try koyarak da denedim olmadı.
Kodlar şunlar;
Kod: Tümünü seç
var
resultx:string;
begin
sendweb:=TidHttp.Create(Self);
post1 := TIdMultiPartFormDataStream.Create;
ms:=TMemoryStream.Create;
jpg :=TJpegImage.Create;
jpg.Assign(Image1.Picture.Bitmap);
jpg.SaveToStream(ms);
post1.AddObject('image','image/jpeg',ms,ExtractFileName(edit1.text));
jpg.Free;
sendweb.Request.ContentType := post1.RequestContentType;
post1.Position := 0;
resultx:=sendweb.Post('http://www.xx.net/resim.php',post1);
memo1.Text:=resultx;
post1.Free;
sendweb.Free;
Re: Resim dosyasını Base64 ile göndermek
Php de gönderilen dosyayı nasil kaydediyorsun, aşagıdakine benzer bir kod kullanman gerekir.
move_uploaded_file($_FILES["image"]["tmp_name"],"resim_dir/" . $_FILES["image"]["name"]);
Ayrıca herhangi bir hata oluşmuş mu kontrol da etmelisin
if ($_FILES["image"]["error"] > 0)
{
echo "Gönderim hatası: " . $_FILES["file"]["error"] ;
}
move_uploaded_file($_FILES["image"]["tmp_name"],"resim_dir/" . $_FILES["image"]["name"]);
Ayrıca herhangi bir hata oluşmuş mu kontrol da etmelisin
if ($_FILES["image"]["error"] > 0)
{
echo "Gönderim hatası: " . $_FILES["file"]["error"] ;
}