我不知道這是否可能,但我需要將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並將其與實際產品數據一起再次存儲。但是,我雖然在數據庫上存儲臨時數據的效率並不高,因爲我將不得不繼續傳輸數據,但是不會減慢連接速度? –