2012-08-09 22 views
0

下面的代碼我通過html頁面上的表單獲取圖像,對其進行一些裁剪並添加另一個圖像,它完美地工作。刪除上傳文件前的特殊字符

我在用,我從HTML形式得到了圖像的名稱,特殊字符的問題...

總之,你在上傳之前,裁剪圖像,移動它們,等等,我必須對待他們的名字...刪除空格,刪除口音等..

我試圖使用一些功能,但沒有成功..有人可以幫助嗎?

這裏我的代碼:

<?php 

require("./lib/WideImage.php"); 

// Example of accessing data for a newly uploaded file 
$fileName = $_FILES["uploaded_file"]["name"]; 
$fileTmpLoc = $_FILES["uploaded_file"]["tmp_name"]; 
// Path and file name 
$pathAndName = "cartelas/cart".$fileName; 
// Run the move_uploaded_file() function here 
$moveResult = move_uploaded_file($fileTmpLoc, $pathAndName); 
// Evaluate the value returned from the function if needed 


$image = WideImage::load($pathAndName); 

$unh = WideImage::load("unh11.png"); 

$crop1 = $image->crop("25", "50", 111, 132); 


$out1 = $crop1->merge($unh,'middle','middle'); 

$pathAndName1 = "unha-1-".$fileName; 

$crop1->saveToFile('./cartelas/estampa'.$pathAndName1); 

$out1->saveToFile('./cartelas/'.$pathAndName1); 

echo "Imagens geradas:<BR>"; 
echo "<img src=./cartelas/estampa$pathAndName1><img src=./cartelas/$pathAndName1>"; 
?> 

謝謝!

+5

嘗試'$ newStr = preg_replace(「/^[a-zA-Z0-9] * /」,「_」,$ str);'這將用下劃線代替任何非字母數字。 – Matt 2012-08-09 18:52:12

回答

0

如果你想在PHP端做,你可以做任何你想要的文件名。如果你不必有完全相同的名字,你可以使用rawurlencode()或base64_encode();甚至是來自該名稱的md5()散列。這應該解決奇怪的名字或特殊字符的問題。

如果你需要存儲所有這些文件,你可以做$newfilename = md5($filename) . '_' . time();,所以它們將是唯一的。你也可以添加用戶ID或類似的東西。

+0

如果在同一時間上傳2個具有SAME名稱的不同文件會發生什麼情況? – Jocelyn 2012-08-09 21:21:42