上传多个图像并将每个图像路径存储在mysql Dtatabase的不同列中

时间:2016-05-02 09:32:45

标签: php jquery mysql ajax image

Hiii Everyone,

这是我的HTML表单。

 <form action="" id="uploadForm" class="col-md-8 col-md-offset-2" >
     <h2 class="bold text-uppercase"></h2>
     <br>
    <div>
                               <div class="input-group form-group">
                                  <label for=""> Upload Your Photo </label>
                                  <br>                              
                                  <input name="userImage[]" type="file" class="inputFile">
                               </div>
                            </div>
                            <div class="input-group form-group">
                               <label for=""> Upload Your Resume</label>
                               <br> 
                               <input name="userImage[]" type="file" class="inputFile">
                            </div>
                            <div class="input-group form-group">
                               <label for=""> SSLC Mark Sheet</label>
                               <br> 
                               <input name="userImage[]" type="file" class="inputFile">
                            </div>

我的Ajax代码

$("#uploadForm").on('submit',(function(e) {
    e.preventDefault();
    $.ajax({
          url: "upload.php",
      type: "POST",
      data:  new FormData(this),
      contentType: false,
          cache: false,
      processData:false,
      success: function(data){
      alert(data);
        },
        error: function(){}           
     });
  }));

我的PHP代码

<?php
$link = mysqli_connect("localhost","root","","spark") or die("Error ".mysqli_error($link));

if(is_array($_FILES)) {
foreach ($_FILES['userImage']['name'] as $name => $value){
if(is_uploaded_file($_FILES['userImage']['tmp_name'][$name])) {
$sourcePath = $_FILES['userImage']['tmp_name'][$name];
$targetPath = "uploads/".$_FILES['userImage']['name'][$name];
if(move_uploaded_file($sourcePath,$targetPath)) {
        $query = "INSERT INTO filedetails(filepath) VALUES ('$fileTarget')";
            $link->query($query) or die("Error : ".mysqli_error($link));            

?>
<img src="<?php echo $targetPath; ?>" width="150px" height="180px" />
<?php
}}}}

?>

现在我的代码中究竟是什么,如果我上传3个图像,它存储在images文件夹中,并在表单列名中插入文件路径详细信息作为filepath。我想要做的是我想从数组userImage拆分每个图像所以我将第一个图像存储在column1中,第二个图像存储在column2中,类似于数据库中的任意数量的图像。为了简要说明如何从这个数组中获取每个值$ _FILES ['userImage']。如果有人能告诉解决方案它会帮助我很多。谢谢你。

1 个答案:

答案 0 :(得分:0)

以下是我的建议:

  • 如果要保存的照片数量是固定的,就像让我们说(3)照片一样 每个人,为您的表格中的照片提供(3)列。这很容易。
  • 如果要保存的照片数量不固定,您可能需要将其存放 在单个列中并使用例如分号(;)将它们分开。该列必须是灵活的,将其设置为VARCHAR(100)(这一点不是很好)
  

示例:image_file_path1; image_file_path2; image_file_path3

  • 检索数据时(如上例所示),您必须切片 每个带分号的image_file_path可以显示它或放入<input>字段 (无论你喜欢做什么)。

-OR -

  • 您可能希望规范化表格。例如,你有一个人的表和要上传的照片可以超过(1),然后 为照片创建另一个表。例如,photo_tbl将会 列idperson_idimg_file

在MySQL中,您可以使用SUBSTRING_INDEX('try;try', ';')拆分字符串。

  

请参阅String Functions

在PHP 4+中,您可以使用explode(";", $string)拆分字符串并将其存储在数组变量中。

  

请参阅EXPLODE

在JQuery中,您可以使用string.split(';');拆分字符串。

  

请参阅Split