如何将post值传递给upload.php表单?

时间:2014-05-06 23:27:41

标签: php mysql forms post

我尝试了一个简单的帖子值传递给另一个形式,这是互联网上的例子。所有这些都有效,但是当我尝试在我自己的表单上实现时,它确实工作......我也尝试使用会话。但是没有运气..有人可以帮助我..这是我的第一个表单代码..表单用于使用AJAX上传多个文件,并通过upload.php将其他信息保存到mysql,其中post值应该去。 / p>

index.php - 上传表单

<form action="upload.php" method="post" enctype="multipart/form-data">
  <?php
  $cat = @$_GET['cat'];
  $subcat = @$_GET['subcat'];
  $qqq = @$_GET['qqq'];
  $con = @$_GET['con'];

  $quer2="SELECT DISTINCT category,cat_id FROM category order by category"; 
  if (isset($cat) and strlen($cat) > 0) {
    $quer = "SELECT DISTINCT subcategory FROM subcategory where cat_id=$cat order by subcategory"; 
  } else {
    $quer="SELECT DISTINCT subcategory FROM subcategory order by subcategory"; 
  } 

  echo "<p>Category:&nbsp;";
  //File Category
  echo "<div class='dropdown'><select id='cat' name='cat' onchange=\"reload(this.form)\" class='dropdown-select'><option value=''>Click to Select</option>";
  foreach ($dbo->query($quer2) as $noticia2) {
    if  ($noticia2['cat_id'] == @$cat) { 
      echo "<option selected value='$noticia2[category]'>$noticia2[category]</option>"."<BR>";
    } else {
      echo  "<option value='$noticia2[cat_id]'>$noticia2[category]</option>";
    }
  }
  echo "</select></div>";

  //File Sub-Category
  echo "<div class='dropdown'><select id='subcat' name='subcat' class='dropdown-select'><option value=''>Click to Select</option>";
  foreach ($dbo->query($quer) as $noticia) {
    echo  "<option value='$noticia[subcategory]'>$noticia[subcategory]</option>";
  }
  echo "</select></div>";
  //File Type
  echo "<div class='dropdown'><select id='qqq' name='qqq' onClick='#' class='dropdown-select'>
    <option value=''".(($qqq == '') ? " selected='selected'":"").">Click to Select</option>
    <option value='Photos'".(($qqq == 'Photos') ? " selected='selected'":"").">Photos/Images</option>
    <option value='Videos'".(($qqq == 'Videos') ? " selected='selected'":"").">Audios/Videos</option>
    <option value='PDF'".(($qqq == 'PDF') ? " selected='selected'":"").">PDF Documents</option>
    <option value='Word'".(($qqq == 'Word') ? " selected='selected'":"").">Word Documents</option>
    <option value='Presentation'".(($qqq == 'Presentation') ? " selected='selected'":"").">Power Point Presentation</option>
    <option value='Zip'".(($qqq == 'Zip') ? " selected='selected'":"").">Compressed Documents</option>";
    echo "</select></div></p>";

    $quer2="SELECT DISTINCT name,id FROM user order by name"; 
    echo "<p>Contributor:&nbsp;";
    //Contributors
    echo "<div class='dropdown' style='width:600px;'><select id='con' name='con' class='dropdown-select' style='width:600px;'><option value=''>Click to Select</option>";
    foreach ($dbo->query($quer2) as $contributor) {
    if ($contributor['id'] == @$con) { 
      echo "<option selected value='$contributor[name]'>$contributor[name]</option>"."<BR>";
    } else {
      echo  "<option value='$contributor[name]'>$contributor[name]</option>";
    }
  }
  echo "</select></div></p>";
?>
<input type="text" name="sam" id="sam" value="sample" />
<div id="mulitplefileuploader" name="photos">Choose File(s)</div>
<div id="status" ></div>
<script>
  $(document).ready(function() {

    var settings = {
      url: "upload.php",
      method: "POST",
      allowedTypes:"jpg,jpeg,png,bmp,gif,mp3,mp4,avi,mpeg,flv,wmv,3gp,txt,doc,docx,ppt,pdf,zip,rar",
      fileName: "myfile",
      multiple: true,
        onSuccess:function(files,data,xhr) {
        $("#status").html("<font color='green'></font>");
      },
      onError: function(files,status,errMsg) {      
        $("#status").html("<font color='red'>Failed.</font>");
      }
    }
    $("#mulitplefileuploader").uploadFile(settings);
  });
  </script>
</form>

以及post值应该去的upload.php ..

<?php
  error_reporting(0);
  session_start();

  include('config.php');
  //Variables
  //Function to sanitize values received from the form. Prevents SQL injection
  function clean($str) {
    $str = @trim($str);
    if (get_magic_quotes_gpc()) {
      $str = stripslashes($str);
    }
    return mysql_real_escape_string($str);
  }

  $cat = $_SESSION['cat'];
  $subcat=$_POST['sam'];


  $session_id='auto'; //$session id
  define ("MAX_SIZE","500000"); 
  function getExtension($str) {
    $i = strrpos($str,".");
    if (!$i) { return ""; }
    $l = strlen($str) - $i;
    $ext = substr($str,$i+1,$l);
    return $ext;
  }
  //If directory doesnot exists create it.
  $output_dir = "upload/";
  if (isset($_FILES["myfile"])) {
    $ret = array();

    $error = $_FILES["myfile"]["error"];
 //  {  // ????

    // single file
    if (!is_array($_FILES["myfile"]['name'])) {
      $fileName = $_FILES["myfile"]["name"];
      $size=filesize($_FILES['myfile']['tmp_name'][$name]);
      //get the extension of the file in a lower case format
      $ext = getExtension($filename);
      $ext = strtolower($ext);

      $uploaderid = $_SESSION['SESS_ID'];
      $uploadername = $_SESSION['SESS_PRO_PIC'];
      $uploadcat = $_POST['cat'];
      //get filename combined with time
      $image_name = time().$filename; 
      $Ficon = 'images/Dicon.png';
      $image_title = $fileName;

      echo "<img src='".$output_dir.$image_name."'>";
      $newname = $output_dir.$image_name;

      move_uploaded_file($_FILES["myfile"]["tmp_name"], $output_dir. $_FILES["myfile"]["name"]);
      //Save Details
      $time = time();
      mysql_query("INSERT INTO `udocs`(file_id,file_name,category,file_size,file_type,file_path,uploader_id,author,file_icon,date_upload,time_upload,image_album,section,subject) 
            VALUES ('$session_id','$image_title','$uploadcat','$size','$ext','upload/$image_title','$uploaderid','$uploadername','$Ficon','" . $_POST["fudate"] ."','" . $_POST["futime"] ."','" . $_POST["fualbum"] ."','$cat','$subcat')");
      $ret[$fileName]= $output_dir.$fileName;
    } else {
      $fileCount = count($_FILES["myfile"]['name']);
      for ($i=0; $i < $fileCount; $i++) {
        $fileName = $_FILES["myfile"]["name"][$i];
        $size=filesize($_FILES['myfile']['tmp_name'][$name]);
        //get the extension of the file in a lower case format
        $ext = getExtension($filename);
        $ext = strtolower($ext);
        $ret[$fileName] = $output_dir.$fileName;

        $uploaderid = $_SESSION['SESS_ID'];
        $uploadername = $_SESSION['SESS_PRO_PIC'];
        $uploadcat ='Photos/Images';
        //get filename combined with time
        $image_name = time().$filename; 
        $Ficon = 'images/Dicon.png';
        $image_title=$filename;

        echo "<img src='".$output_dir.$image_name."'>";
        $newname = $output_dir.$image_name;

        //Sanitize the POST values

        move_uploaded_file($_FILES["myfile"]["tmp_name"][$i], $output_dir.$fileName );
        //Save Details
        $time = time();
        mysql_query("INSERT INTO `udocs`(file_id,file_name,category,file_size,file_type,file_path,uploader_id,author,file_icon,date_upload,time_upload,image_album,section,subject) 
                VALUES ('$session_id','$image_title','$uploadcat','$size','$ext','$newname','$uploaderid','$uploadername','$Ficon','" . $_POST["fudate"] ."','" . $_POST["futime"] ."','" . $_POST["fualbum"] ."','$cat','$subcat')");

      } 
    }
  }
  echo json_encode($ret);
// } // ?? this must close the unmatched, useless opening brace above
?>

1 个答案:

答案 0 :(得分:0)

我不确定你明白你做了什么。您在页面加载后立即调用uploadFile函数。

对我来说,你必须用from加载页面,然后用户将在他的电脑上选择一些文件,然后他将提交表格,你必须上传他的文件。所以你必须在表单提交上调用函数uploadFile,但不像你那样。

您需要以下代码中的内容。

jQuery的:

$(document).ready(function()
{
    $(document).on('submit','form#formId',function() {
        var settings = {
            url: "upload.php",
            method: "POST",
            allowedTypes:"jpg,jpeg,png,bmp,gif,mp3,mp4,avi,mpeg,flv,wmv,3gp,txt,doc,docx,ppt,pdf,zip,rar",
            fileName: "myfile",
            multiple: true,
            onSuccess:function(files,data,xhr)
            {
                $("#status").html("<font color='green'></font>");
            },
            onError: function(files,status,errMsg)
            {       
                $("#status").html("<font color='red'>Failed.</font>");
            }
        }
        $("#mulitplefileuploader").uploadFile(settings);
    }
});

在HTML中,您必须在表单中添加id属性:

<form action="upload.php" id='formId' method="post" enctype="multipart/form-data">

旧答案已删除