如何在PHP会话中存储照片上传?

the*_*_za 5 php mysql file-upload

我已经构建了这个webform向导,包含几个PHP页面.在这几页中,用户可以填写表单,数据会临时存储在会话中,最后一页会话用于存储MYSQL数据库中的所有数据.除了上传的文件外,一切正常.这是我的代码:

HTML: wizard_page2

<form name="registratieformulier" method="post" enctype="multipart/form-data" action="sw3.php">

    <tr><td>Foto winkel uploaden: </td><td><input type="file" name="uploadfoto"/></td></tr><br /><br />

      <tr><td><strong>Omschrijving van winkel:</strong></td>                    </tr><br />

       <tr><textarea cols="50" rows="7" name="omschrijvingwinkel"></textarea></tr>
       <input name="pkbedrijven" value="<?php echo($pkbedrijven); ?>" type="hidden" />
    <input type="submit" name="stuurfoto" value="Verzenden" />

</form>
Run Code Online (Sandbox Code Playgroud)

PHP: wizard_last_page

    $_FILES['uploadfoto']['name']       = $_SESSION["naamfoto"];
    $_FILES['uploadfoto']['tmp_name']   = $_SESSION["tijdelijk"];

    $bn =   $_SESSION["wn"];

     $target_path = "../../winkels/$bn/";

      $target_path = $target_path . basename( $_FILES['uploadfoto']['name']);


    move_uploaded_file($_FILES['uploadfoto']['tmp_name'], $target_path)or die("There was an error uploading the file, please try again!");
     $foto_path  = "http://mywebsite.nl/winkels/$bn/".basename($_FILES['uploadfoto']['name']);


   $omschrijving   = $_SESSION["omschrijving"];

   $add = "UPDATE winkelprofiel SET winkelomschrijving='$omschrijving', winkelfoto='$foto_path' WHERE fkBedrijvenID=$pkbedrijven ";
   $query_upload = mysql_query($add) or die("De winkelfoto en omschrijving konden niet worden opgeslagen");
Run Code Online (Sandbox Code Playgroud)

dec*_*eze 8

$_FILES数组仅保存有关已在此请求中上载的文件的信息.如果您不在同一请求中的其他位置保存该文件,则在请求结束时PHP将删除该文件.你不能简单地保存$_FILES['uploadfoto']['tmp_name']到会话中,并希望文件以后仍然存在,因为它不会.$_SESSION重新分配值也没有意义$_FILES,它不会带回文件.

你需要做什么:

  1. 如果上传成功,请$_FILES['uploadfoto']['tmp_name']立即转移到其他地方
  2. 保存您将其移动到的位置 $_SESSION
  3. $_SESSION在多页面过程结束时对该文件执行某些操作(根本不需要$_FILES)
  4. 有一些机制可以删除旧的上传文件,以防用户放弃会话并且永远不会使用该文件