2014-01-10 51 views
-3

是否有任何方法來散列字符串的一部分。例如,我有一個名爲「abc.jpg」的文件,我可以在「.jpg」哈希之前加上字母嗎? 第一個文件是upload_form.php將字符串的一部分轉換爲散列值

<form enctype="multipart/form-data" action="upload_file.php" method="POST"> 
    <input type="hidden" name="MAX_FILE_SIZE" value="500"/> 
    <input type="file" name="pix" size="60"/><br/> 
    <input type="submit" name="submit" value="Upload"/> 
</form> 

第二個文件是upload_file.php

<?php 
if(!isset($_POST['submit'])) 
{ 
    include("form_upload.php"); 
} 
else 
{ 
    //if file is too large too upload 
    if($_FILES['pix']['tmp_name']=="") 
    { 
    echo "<p>file is too large too upload, Please make sure the file you want to upload is smaller than 5MB</p>"; 
    include("form_upload.inc"); 
    exit(); 
    } 
    //if the file is not jpeg format 
    if(!preg_match("/^image\/jpeg$/",$_FILES['pix']['type'])) 
    { 
    echo "<p>only jpg file is accepted !</p>"; 
    include("form_upload.inc"); 
    exit(); 
    } 
    // if everything is ok 
    else 
    { 
    $destination='C:\xampp\htdocs\test\my_application\picture\ '.$_FILES['pix']['name']; 
    $tmp_file=$_FILES['pix']['tmp_name']; 
    move_uploaded_file($tmp_file,$destination); 
    echo "<p>picture was upload successfully</p>"; 
    echo "<p>Name :{$_FILES['pix']['name']}</p>"; 
    echo "<p>Size {$_FILES['pix']['size']}</p>"; 
    echo "<p>Type {$_FILES['pix']['type']}</p>"; 
    echo "<img src='picture/ {$_FILES['pix']['name']}' alt='picture'/>"; 
    } 
} 
?> 

我想對畫面名稱轉移到MD5值,但只有名稱不是「.JPG」。有沒有辦法做到這一點

+1

圖片名稱是一個字符串,所以用負值的substr切割字符串。像-4 – Goikiu

+0

「'preg_match(」/^image \/jpeg $ /「,$ _ FILES ['pix'] ['type'])'」。爲什麼? '$ _FILES ['pix'] ['type'] =='image/jpeg''可以正常工作嗎?爲什麼包含正則表達式?另外,請檢查'pathinfo'。 – h2ooooooo

回答

0

你可以這樣做:如果你知道分機號是.jpg

$hash = md5(basename($_FILES['pix']['name'], '.jpg')) . '.jpg'; 

您還可以通過爆炸的點,並採取產生數組的最後一個元素得到擴展(只是舉個例子,你也可以使用正則表達式或其他):

$ext = '.' . end(explode('.', $_FILES['pix']['name'])); 
$hash = md5(basename($_FILES['pix']['name'], $ext)) . $ext; 
0

三江源我已經找到另一種方法是在哈希值後面添加一個字符串「.jpg」。

相關問題