我不知道这是否可能,但我需要将FILE数据存储到会话中,以便将来可以使用它的信息将图像存储到服务器中。将FILE数据存储在会话中供以后使用move_uploaded_file
目前拖放操作是直接将数据存储到服务器。
基本上我有一个表格,用户可以填写产品的信息,然后添加图像。一旦用户输入需要的信息并按提交,这些信息将被存储到创建产品ID的mysql中。与该产品的关键,我会用它来命名图像,如product_ID + product_namme + image number.jpg问题是我无法找到一种方法来存储FILE数据到这一点,我试过使用会话,但是当我重申它的价值是空白。
PHP 此版本的工作原理,但直接存储数据,所以我不能重命名文件。这是发生之前
foreach($_FILES['file']['name'] as $position => $name){
if(move_uploaded_file($_FILES['file']['tmp_name'][$position], '../ProductImages/'.$name));
}
这与它的会话的代码,但是当我赞同这些会议用户按下submited后,他们是空白。如果我在这个代码下面回显,它会有数据。有什么我失踪了吗?
if(!empty($_FILES['file']['name'][0])){
$_SESSION['imgAmount'] = 1;
foreach($_FILES['file']['name'] as $position){
$_SESSION['tmpVal'][$position] = $_FILES['file']['tmp_name'][$position];
$_SESSION['imgAmount']++;
}
}
这就是SEESION被称为
$i = 0;
if(isset($_SESSION['tmpVal'])){
while($i < $_SESSION['imgAmount']){
move_uploaded_file($_SESSION['tmpVal'][$i],'../ProductImages/'.$imgID . 'child' . $i . '.jpg');
$i++;
echo "test0";
echo "<br>" . $_SESSION ['tmpVal'];
echo "<br>" . $_SESSION ['imgAmount'];
echo "<br>" . $_SESSION ['tmpVal'][0];
echo "<br>" . $_SESSION ['tmpVal'][1];
}
}
数组中的信息的会话代码只是临时使用。将它存储在会话中是绝对没有意义的。将所需的那些方面保存到数据库中,将临时文件移到最终目标。为此,你不应该使用客户端提供的文件名!这是一个安全漏洞!而是沿着你自己勾画的方法生成一个内部文件名。只要改变你将你的调用中的目标路径连接到'move_uploaded_file()'的方式。 – arkascha
你会错误地回答这个问题。让drag'n'drop _not_自动上传文件并将其与其他信息一起发布,而不是之前有关安全性的评论。如果文件很大,当用户提交表单时上传可能甚至不完整。 –
我想过把它移动到数据库的临时文件,一旦我将所有其他信息从用户存储到数据库,获取product_ID并将其与实际产品数据一起再次存储。但是,我虽然在数据库上存储临时数据的效率并不高,因为我将不得不继续传输数据,但是不会减慢连接速度? –