Discussions
Categories
- 196.9K All Categories
- 2.2K Data
- 239 Big Data Appliance
- 1.9K Data Science
- 450.3K Databases
- 221.7K General Database Discussions
- 3.8K Java and JavaScript in the Database
- 31 Multilingual Engine
- 550 MySQL Community Space
- 478 NoSQL Database
- 7.9K Oracle Database Express Edition (XE)
- 3K ORDS, SODA & JSON in the Database
- 546 SQLcl
- 4K SQL Developer Data Modeler
- 187K SQL & PL/SQL
- 21.3K SQL Developer
- 295.9K Development
- 17 Developer Projects
- 138 Programming Languages
- 292.6K Development Tools
- 107 DevOps
- 3.1K QA/Testing
- 646K Java
- 28 Java Learning Subscription
- 37K Database Connectivity
- 155 Java Community Process
- 105 Java 25
- 22.1K Java APIs
- 138.1K Java Development Tools
- 165.3K Java EE (Java Enterprise Edition)
- 18 Java Essentials
- 160 Java 8 Questions
- 86K Java Programming
- 80 Java Puzzle Ball
- 65.1K New To Java
- 1.7K Training / Learning / Certification
- 13.8K Java HotSpot Virtual Machine
- 94.3K Java SE
- 13.8K Java Security
- 204 Java User Groups
- 24 JavaScript - Nashorn
- Programs
- 442 LiveLabs
- 38 Workshops
- 10.2K Software
- 6.7K Berkeley DB Family
- 3.5K JHeadstart
- 5.7K Other Languages
- 2.3K Chinese
- 171 Deutsche Oracle Community
- 1.1K Español
- 1.9K Japanese
- 232 Portuguese
how to load folder with images php with oracle
Hi i want to upload from my php form folder with images what should i fix in my php code for 1 image?
<?php
define("ORA_CON_UN", "obrazy");
define("ORA_CON_PW", "miksas1");
define("ORA_CON_DB", "//localhost/orcl");
if (!isset($_FILES['lob_upload'])) {
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST"
enctype="multipart/form-data">
Image filename: <input type="file" name="lob_upload">
<input type="submit" value="Upload">
</form>
<?php
}
else {
$conn = oci_connect(ORA_CON_UN, ORA_CON_PW, ORA_CON_DB);
// Insert the BLOB from PHP's tempory upload area
$lob = oci_new_descriptor($conn, OCI_D_LOB);
$stmt = oci_parse($conn, 'INSERT INTO FOTKI (FOTKAID, FOTKA) '
.'VALUES(:MYBLOBID, EMPTY_BLOB()) RETURNING FOTKA INTO :FOTKA');
oci_bind_by_name($stmt, ':MYBLOBID', $myblobid);
oci_bind_by_name($stmt, ':FOTKA', $lob, -1, OCI_B_BLOB);
oci_execute($stmt, OCI_DEFAULT);
// The function $lob->savefile(...) reads from the uploaded file.
// If the data was already in a PHP variable $myv, the
// $lob->save($myv) function could be used instead.
if ($lob->savefile($_FILES['lob_upload']['tmp_name'])) {
oci_commit($conn);
echo '<p>Obrazek załadowano</p>';
}
else {
echo "Couldn't upload Blob\n";
}
$lob->free();
oci_free_statement($stmt);
oci_close($conn); // log off
}
?>
<?php
define("ORA_CON_UN", "obrazy");
define("ORA_CON_PW", "miksas1");
define("ORA_CON_DB", "//localhost/orcl");
if (!isset($_FILES['lob_upload'])) {
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST"
enctype="multipart/form-data">
Image filename: <input type="file" name="lob_upload">
<input type="submit" value="Upload">
</form>
<?php
}
else {
$conn = oci_connect(ORA_CON_UN, ORA_CON_PW, ORA_CON_DB);
// Insert the BLOB from PHP's tempory upload area
$lob = oci_new_descriptor($conn, OCI_D_LOB);
$stmt = oci_parse($conn, 'INSERT INTO FOTKI (FOTKAID, FOTKA) '
.'VALUES(:MYBLOBID, EMPTY_BLOB()) RETURNING FOTKA INTO :FOTKA');
oci_bind_by_name($stmt, ':MYBLOBID', $myblobid);
oci_bind_by_name($stmt, ':FOTKA', $lob, -1, OCI_B_BLOB);
oci_execute($stmt, OCI_DEFAULT);
// The function $lob->savefile(...) reads from the uploaded file.
// If the data was already in a PHP variable $myv, the
// $lob->save($myv) function could be used instead.
if ($lob->savefile($_FILES['lob_upload']['tmp_name'])) {
oci_commit($conn);
echo '<p>Obrazek załadowano</p>';
}
else {
echo "Couldn't upload Blob\n";
}
$lob->free();
oci_free_statement($stmt);
oci_close($conn); // log off
}
?>
Answers
-
If I understand correctly you want to convert that script to upload
multiple images?
Once you know the filenames, you can use code like that below:<?php // drop table mybtab; // create table mybtab (blobid number, blobdata blob); $c = oci_connect('cj', 'secret', 'localhost/orcl'); if (!$c) { $m = oci_error(); trigger_error('Could not connect to database: '. $m['message'], E_USER_ERROR); } $sql = 'delete from mybtab'; $s = oci_parse ($c, $sql); $e = oci_execute($s, OCI_COMMIT_ON_SUCCESS); $lob = oci_new_descriptor($c, OCI_D_LOB); $sql = 'insert into mybtab (blobid, blobdata) values(:myblobid, :blobdata)'; $s = oci_parse($c, $sql); oci_bind_by_name($s, ':myblobid', $myblobid); oci_bind_by_name($s, ':blobdata', $lob, -1, OCI_B_BLOB); // Load first image $myblobid = 1; $myv = file_get_contents("/tmp/oraclelogo.jpg"); $lob->writeTemporary($myv, OCI_TEMP_BLOB); oci_execute($s, OCI_NO_AUTO_COMMIT); // Load second image $myblobid = 2; $myv = file_get_contents("/tmp/unbreaklinux.jpg"); $lob->writeTemporary($myv, OCI_TEMP_BLOB); oci_execute($s, OCI_NO_AUTO_COMMIT); oci_commit($c); $lob->close(); ?>
Note this only parses once.
I used a temporary lob but you could convert your RETURNING INTO code
to similarly insert multiple values. Also see
http://www.oracle.com/technetwork/topics/php/underground-php-oracle-manual-098250.html
This discussion has been closed.