为一个产品存储多个图像

时间:2015-09-03 15:14:54

标签: php amazon-web-services amazon-s3

我正在使用AWS上的PHP / MYSQL开发一个基本的电子商务网站。我只需要知道为产品存储多个尺寸的多个图像的好方法。

问题是将文件系统中的图像与数据库中的产品互连的最佳方法是什么:

我正在考虑:

保留对亚马逊s3动态创建的唯一文件夹的引用。

在db中创建新表(类似于product_and_images),我们将保留有关产品和图像的信息。

由于

2 个答案:

答案 0 :(得分:0)

您可以在数组和serialize()中编写文件路径。然后它可以用DB编写。

答案 1 :(得分:0)

Hope I'm Able to understand your problem. Suppose, There are 2 tables. i.e. 'Product' table and 'ProductImages' table.

'Product' table having 3 column i.e ProductNo(Primary Key, Auto-Incremented), ProductName, ProductPrice
'ProductImages' having 3 column i.e ImageNo(Primary Key, Auto-Incremented), ProductNo, ProductImage

<强>产品-information.php文件

<form method='POST' action='Submit-Product-Information.php' enctype='multipart/form-data'>
    Product Name: <input type='text' name='ProductName'>
    Product Price: <input type="text" name="ProductPrice">
    Product Image: <input type='file' name="ProductImage[]" multiple> //Since, Product Images are multiple.
</form>

提交 - 产品information.php文件

<?
extract($_POST);

//First Insert Product Details
$sql = 'INSERT INTO Product(ProductName,ProductPrice)
       VALUES(:ProductName,:ProductPrice)';
$q = $conn->prepare($sql);  
$q->execute($task);

$ProductNo = $conn->lastInsertId(); //Get Product No

$TotalUploadedFiles=count($_FILES['ProductImage']['name']);

for($i=0;$i<$TotalUploadedFiles;$i++)
{
                $UploadedFileName=$_FILES['ProductImage']['name'][$i];
                if($UploadedFileName!='')
                {
                                $upload_directory = "Product Image/"; //Product Image Folder, Where you will upload Product Images
                                $TargetPath=time().$UploadedFileName;
                                if(move_uploaded_file($_FILES['ProductImage']['tmp_name'][$i], $upload_directory.$TargetPath))
                                {    
                                    $sql = 'INSERT INTO ProductImages(ProductNo,ProductImage)
                           VALUES(:ProductNo,:TargetPath)';
                                    $q = $conn->prepare($sql);  
                                    $q->execute($task);                 
                                }
                }
}
?>