簡體   English   中英

PHP $ _FILES數組操作

[英]PHP $_FILES Array Manipulation

我正在使用表單上傳圖片。 上傳圖片后,我們將能夠看到上傳的圖片。 然后我使用JCrophttp://deepliquid.com/content/Jcrop.html )來允許裁剪此圖像。 我們假設我只關心JPEG圖像。 然后我准備提交表格。

在表單提交后,我將執行一些圖像處理並裁剪圖像。 但是我想把這個裁剪圖像的信息放回到$_FILES數組中(這是必須的)。 我如何在PHP腳本中操作這個$_FILES數組?

這是我嘗試過的,但是不行。

$upload_dir = '/Users/user/Sites/tmp/';

$file_name = $_FILES['image']['name'];
$file_name = "cropped_".$file_name;
$tmp_name = $_FILES['image']['tmp_name'];
$file_size = $_FILES['image']['size'];

$src_file = imagecreatefromjpeg($tmp_name);

list($width,$height) = getimagesize($tmp_name);

// Creates cropped image
$tmp = imagecreatetruecolor($_POST['w'], $_POST['h']);
imagecopyresampled($tmp, $src_file, 0, 0, $_POST['x'], $_POST['y'], $_POST['w'], $_POST['h'], $_POST['w'], $_POST['h']);
$small_pic_file_path = $upload_dir.$file_name;

imagejpeg($tmp,$small_pic_file_path,85);
$message = "<img src='http://localhost/~user/tmp/".$file_name."'>";

$_FILES['image']['name'] = $file_name;
$_FILES['image']['type'] = "image/jpeg";
// unlink($tmp_name);
// if(!move_uploaded_file($upload_dir.$file_name, $tmp_name)) echo "Failure Moving Image";
$_FILES['image']['tmp_name'] = $upload_dir.$file_name;
$_FILES['image']['error'] = 0;
$sizes = getimagesize($upload_dir.$file_name);
$_FILES['image']['size'] = ($sizes['0'] * $sizes['1']);

允許更改此$_FILES數組?

只有在全局數組中更改才能起作用。 你只是說$_FILES['image']['tmp_name']將是新創建的。 但是tmp位置具有相同的舊文件。

但您必須更新/tmp文件夾中的圖像。

獲取您的tmp路徑並將圖像copy到那里。

一種copy($newImage, /tmp) - 從php.ini獲取你的tmp文件夾路徑

改變一個超級全局並不是一個好主意,你最好將它復制到另一個變量中,然后做任何你想做的事情。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM