Catatan Programmer Perbatasan
CREATE TABLE IF NOT EXISTS `file_attachment` (`id` bigint(20) NOT NULL,`file_content` mediumblob NOT NULL,`file_name` varchar(255) NOT NULL,`file_type` varchar(255) NOT NULL,`file_size` bigint(20) NOT NULL DEFAULT '0') ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
3. ini coding php untuk menampil dan mengambil gambar dari database, simpan dgn nama view_blob.php cara menggunakan nya jadi jika ingin melihat gambar di id 1 maka http://localhost/project/view_blob.php?id=1<?php// CONECT DATABASE@mysql_connect("localhost", "root", "") OR die ("NOT CONNECT DATABASE");@mysql_select_db("gambar") OR die ("CONNECTED, BUT NO DATABASE");$file_name = $_FILES['file']['name'];$tmp_name = $_FILES['file']['tmp_name'];$file_size = $_FILES['file']['size'];$file_type = $_FILES['file']['type'];$fp = fopen($tmp_name, 'r');$file_content = fread($fp, $file_size) or die("Error: cannot read file");$file_content = mysql_real_escape_string($file_content) or die("Error: cannot read file");fclose($fp);// INSERT$qu = "INSERT INTO `file_attachment`(`file_content`,`file_name`,`file_type`,`file_size`)VALUES('".$file_content."','".$file_name."','".$file_type."','".$file_size."')";$re = mysql_query($qu) or die ("Sorry Cant insert db!");echo $file_name." inserted succesfully to database";?>
<?php
// CONECT DATABASE
@mysql_connect("localhost", "root", "") OR die ("NOT CONNECT DATABASE");
@mysql_select_db("gambar") OR die ("CONNECTED, BUT NO DATABASE");
function jin_gfile($txt) {
$txt = preg_replace("/[^a-zA-Z0-9s.]/", "_", trim($txt));
return $txt;
}
$id = $_REQUEST['id'];
$query = "SELECT * FROM `file_attachment` WHERE `id`='".$id."' LIMIT 1";
$qu = mysql_query($query);
$num = mysql_numrows($qu);
if($num > 0) {
$result=mysql_fetch_object($qu);
header("Content-Disposition: attachment; filename=".jin_gfile($result->file_name.""));
header("Content-length: ".$result->file_size."");
header("Content-type: ".$result->file_type."");
echo $result->file_content;
} else {
echo "File tidak valid!";
}
?>4. coding php untuk menampilkan gambar. ini khusus untuk aplikasi di php
5. selanjutnya coding untuk di delphi, untuk menyimpan gambar jgn lupa tambahkan uses IdMultipartFormData<?phpecho '<img src="http://localhost/gambar/view_blob.php?id='. $_GET['gambar'] .'" alt="Gambar Alumni 1996">';?>
procedure TForm1.Button1Click(Sender: TObject);
var
PostData: TIdMultipartFormDataStream;
id : TidHttp;
begin
PostData := TIdMultipartFormDataStream.Create;
id := TIdHttp.Create();
try
PostData.AddFile('file', 'D:\pictures\images.jpg');
id.Post('http://localhost/gambar/insert_blob.php', PostData);
showmessage('Berhasil terupload');
finally
PostData.Free;
id.Free;
end;
end;6. untuk mengambil gambar di delphi
procedure TForm1.Button2Click(Sender: TObject);
var
id : TidHttp;
gambar : TMemoryStream;
begin
id := TIdHttp.Create();
gambar := TMemoryStream.Create;
try
Id.Get('http://localhost/gambar/view_blob.php?id=2',gambar);
gambar.Position := 0;
Image1.Bitmap.LoadFromStream(gambar);
finally
id.Free;
gambar.Free;
end;
end;7. bonus jadi jika ingin post gambar berserta field yang lain misalnya nama, keterangan dll, jangan lupa untuk menyesuaikan struktur databasenya.
procedure TForm1.Button1Click(Sender: TObject);varPostData: TIdMultipartFormDataStream;id : TidHttp;beginPostData := TIdMultipartFormDataStream.Create;id := TIdHttp.Create();tryPostData.AddFile('file', 'D:\pictures\images.jpg');
PostData.AddFormField('nama', nama.text);
PostData.AddFormField('keterangan', keterangan.text);
id.Post('http://localhost/gambar/insert_blob.php', PostData);showmessage('Berhasil terupload');finallyPostData.Free;id.Free;end;end;
id := TIdHttp.Create();gambar := TMemoryStream.Create;Id.Get('http://localhost/test/gambar.jpg',gambar);gambar.Position := 0;Image1.Bitmap.LoadFromStream(gambar);
with TRegistry.Create do
try
RootKey := HKEY_CURRENT_USER;
if OpenKey('\Software\Classes\.myfile', true) then
WriteString('', 'MyAppDataFile');
if OpenKey('\Software\Classes\MyAppDataFile', true) then
WriteString('', 'My Very Own Text File Type');
if OpenKey('\Software\Classes\MyAppDataFile\DefaultIcon', true) then
WriteString('', 'C:\WINDOWS\snotepad.exe');
if OpenKey('\Software\Classes\MyAppDataFile\shell\open\command', true) then
WriteString('', 'C:\WINDOWS\snotepad.exe "%1"');
finally
Free;
end;
SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, 0, 0);
var
a : real
begin
a := 10 / 7;
formatfloat(#.###,a);
end;
3. Sebelum lanjut ke coding Simpan, tambahkan terlebih dahulu var stream : tmemorystream; dibawah procedure button simpan, berikut koding untuk menyimpanprocedure TForm1.Button1Click(Sender: TObject);beginif opendialog1.Execute thenbeginimage1.Picture.LoadFromFile(opendialog1.FileName);end;end;
procedure TForm1.Button2Click(Sender: TObject);
var stream : tmemorystream;
begin
stream := tmemorystream.Create;
image1.Picture.Graphic.SaveToStream(stream);
stream.Position := 0;
ZQuery1.Append;
ZQuery1.FieldByName('nama').AsString := edit1.text;
tblobfield(ZQuery1.fieldbyname('foto')).LoadFromStream(stream);
stream.Free;
ZQuery1.Post;
end;4. untuk menampilkan gambar yang disimpan, kita manfaatkan komponen dbgrid, sebelumnya tambahkan uses Jpeg, dan var stream : tmemorystream; dan Jpg: TJpegImage; di procedure dbgrid cell click
procedure TForm1.DBGrid1CellClick(Column: TColumn);var stream : tmemorystream;Jpg: TJpegImage;beginJpg := TJpegImage.Create;stream := tmemorystream.Create;tblobfield(ZQuery1.FieldByName('foto')).SaveToStream(stream);stream.position := 0;Jpg.LoadFromStream(stream);image1.Picture.Graphic := Jpg;Edit1.Text := ZQuery1.FieldByName('nama').AsString;end;
Fungtion Part 1 : Format
Flutter Tutorial
Tutorial Setting SDK Manager untuk built apk Android di aplikasi Delphi
Perbedaan FormData() dengan URLSearchParams()
Pengaturan Firebase Push Notification di Delphi FMX
membuat fungsi mencari umur pada SQLite
MySQL : Tutorial Menghitung selisih tanggal menggunakan fungsi DATEDIFF
Aplikasi Raport K13 Profesional
Membuat fungsi Count if case berlogika pada MYSQL dan SQLite



