2014-01-10 50 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”。

相关问题