重命名上传图像

时间:2013-01-01 07:24:05

标签: php javascript

我将图像上传到服务器,需要放置_代替图像中的间隙。就像图像的名称是Stack Flow.jpg一样,我需要将它作为Stack_Flow.jpg发送到目录以及电子邮件中。使用以下代码可以实现HOw。我试过但没有成功..我正在以一种形式发送4个文件,代码为---

$filea = $_FILES['FILE1']['name'];
        $fileb = $_FILES['FILE2']['name'];
        $filec = $_FILES['FILE3']['name'];
        $filed = $_FILES['FILE4']['name'];


$order_image_a='order_'.$orderId.'_'.$filea;
        if(!empty($filea)) move_uploaded_file($_FILES['FILE1']['tmp_name'], "../files/$order_image_a");

        $order_image_b='order_'.$orderId.'_'.$fileb;
        if(!empty($fileb)) move_uploaded_file($_FILES['FILE2']['tmp_name'], "../files/$order_image_b");

        $order_image_c='order_'.$orderId.'_'.$filec;
        if(!empty($filec)) move_uploaded_file($_FILES['FILE3']['tmp_name'], "../files/$order_image_c");

        $order_image_d='order_'.$orderId.'_'.$filed;
        if(!empty($filed)) move_uploaded_file($_FILES['FILE4']['tmp_name'], "../files/$order_image_d");

我正在使用以下功能,我怎么能将它应用于所有四个文件 -

<script>
function convertSpecialChars($str) {
    $str = str_replace( " ", "_", $str );
    return $str;
}
</script>

4 个答案:

答案 0 :(得分:2)

这是php中的一个简单示例:

<?php

$name = "Stack Flow.jpg";
echo preg_replace('/[\s\-]+/', '_', $name );
?>

返回Stack_Flow.jpg

http://codepad.org/MQoEZ2wv

答案 1 :(得分:1)

这不是脚本,而是PHP ..

<?
function convertSpecialChars($str) {
    $str = str_replace( " ", "_", $str );
    return $str;
?>

//为所有其他图片做同样的事情..

$filea = str_replace(' ', '_', $filea;
$order_image_a='order_'.$orderId.'_'.$filea;
if(!empty($filea)) move_uploaded_file($_FILES['FILE1']['tmp_name'], "../files/$order_image_a");

答案 2 :(得分:0)

使用:

<?php
    function convertSpecialChars($str) {
        $str = str_replace( " ", "_", $str );
        return $str;
    }
?>

然后你的代码:

$filea = $_FILES['FILE1']['name'];
$fileb = $_FILES['FILE2']['name'];
$filec = $_FILES['FILE3']['name'];
$filed = $_FILES['FILE4']['name'];


$order_image_a='order_'.$orderId.'_'.convertSpecialChars($filea);
if(!empty($filea))
    move_uploaded_file($_FILES['FILE1']['tmp_name'], "../files/$order_image_a");

$order_image_b='order_'.$orderId.'_'.convertSpecialChars($fileb);
if(!empty($fileb))
    move_uploaded_file($_FILES['FILE2']['tmp_name'], "../files/$order_image_b");

$order_image_c='order_'.$orderId.'_'.convertSpecialChars($filec);
if(!empty($filec))
    move_uploaded_file($_FILES['FILE3']['tmp_name'], "../files/$order_image_c");

$order_image_d='order_'.$orderId.'_'.convertSpecialChars($filed);
if(!empty($filed))
    move_uploaded_file($_FILES['FILE4']['tmp_name'], "../files/$order_image_d");

或者,如果可能的话,你可以在循环中完成它(少重复的代码):

for ($i = 1; $i <= 4; $i++)
{
    $file = $_FILES['FILE' . $i]['name'];

    $order_image = 'order_' . $orderId . '_' . convertSpecialChars($file);

    if(!empty($file))
        move_uploaded_file($_FILES['FILE' . $i]['tmp_name'], "../files/$order_image");
}

答案 3 :(得分:0)

在您的代码中更改$order_image_a='order_'.$orderId.'_'.$filea;和其他类似的行 $order_image_a='order_'.$orderId.'_'.convertSpecialChars($filea);

但如果你知道你的代码如何运作会更好。