php上传文件怎么保持文件名

worktile 其他 290

回复

共3条回复 我来回复
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    在PHP中,上传文件并保持文件名的方法有多种方式可供选择。下面列举了两种常用的方法:

    1. 使用原始文件名
    使用原始文件名是最简单的方法,即保持上传文件的原始文件名不变。在PHP中,可以使用$_FILES超全局变量来访问上传文件的信息。要保持文件名不变,只需将上传文件的临时路径移动到目标路径上即可。

    示例代码:
    “`php
    $targetPath = ‘目标存储路径/’ . $_FILES[‘file’][‘name’];
    move_uploaded_file($_FILES[‘file’][‘tmp_name’], $targetPath);
    “`

    2. 生成唯一文件名
    为了避免重复文件名的问题,可以使用唯一文件名来保存上传的文件。PHP中可以使用`uniqid()`函数来生成唯一的文件名,结合原始文件的扩展名进行保存。

    示例代码:
    “`php
    $filename = uniqid() . ‘.’ . pathinfo($_FILES[‘file’][‘name’], PATHINFO_EXTENSION);
    $targetPath = ‘目标存储路径/’ . $filename;
    move_uploaded_file($_FILES[‘file’][‘tmp_name’], $targetPath);
    “`

    以上是两种常见的方法来上传文件并保持文件名不变或保持唯一。根据实际需求,你可以选择其中一种方法来实现文件上传。

    2年前 0条评论
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    在PHP中,可以使用以下几种方法来保持上传文件的原始文件名:

    1. 使用$_FILES[‘file’][‘name’]:在文件上传时,PHP会将原始文件名存储在$_FILES[‘file’][‘name’]变量中。你可以直接使用这个变量来保持文件名。例如:

    “`php
    $originalName = $_FILES[‘file’][‘name’];
    “`

    2. 使用move_uploaded_file()函数:PHP提供了一个move_uploaded_file()函数,可以将上传的文件移动到目标目录。在移动文件时,可以指定新的文件名,并保持原始文件的扩展名。例如:

    “`php
    $extension = pathinfo($_FILES[‘file’][‘name’], PATHINFO_EXTENSION);
    $newName = ‘new_filename.’ . $extension;
    move_uploaded_file($_FILES[‘file’][‘tmp_name’], ‘/path/to/destination/’ . $newName);
    “`

    3. 使用uniqid()函数:uniqid()函数可以生成一个唯一的字符串,可以用来作为新的文件名。利用该函数,你可以在保持文件名的同时避免重复的文件名。例如:

    “`php
    $extension = pathinfo($_FILES[‘file’][‘name’], PATHINFO_EXTENSION);
    $newName = uniqid() . ‘.’ . $extension;
    move_uploaded_file($_FILES[‘file’][‘tmp_name’], ‘/path/to/destination/’ . $newName);
    “`

    4. 使用时间戳作为文件名:你还可以使用时间戳作为上传文件的新名称。这样做可以确保文件名始终不重复,并且与上传时间相关联。例如:

    “`php
    $extension = pathinfo($_FILES[‘file’][‘name’], PATHINFO_EXTENSION);
    $newName = time() . ‘.’ . $extension;
    move_uploaded_file($_FILES[‘file’][‘tmp_name’], ‘/path/to/destination/’ . $newName);
    “`

    5. 使用其他唯一标识符:如果你需要更复杂的方式来保持文件名,你可以使用其他的唯一标识符,例如GUID。可以使用例如uuid()函数来生成一个GUID。例如:

    “`php
    function generateGUID() {
    if (function_exists(‘com_create_guid’)) {
    return com_create_guid();
    } else {
    // 在某些平台上生成GUID的备选方法
    mt_srand((double) microtime() * 10000);
    $charid = strtoupper(md5(uniqid(rand(), true)));
    $hyphen = chr(45); // “-”
    $uuid = chr(123)// “{”
    . substr($charid, 0, 8) . $hyphen
    . substr($charid, 8, 4) . $hyphen
    . substr($charid, 12, 4) . $hyphen
    . substr($charid, 16, 4) . $hyphen
    . substr($charid, 20, 12)
    . chr(125); // “}”
    return $uuid;
    }
    }

    $extension = pathinfo($_FILES[‘file’][‘name’], PATHINFO_EXTENSION);
    $newName = generateGUID() . ‘.’ . $extension;
    move_uploaded_file($_FILES[‘file’][‘tmp_name’], ‘/path/to/destination/’ . $newName);
    “`

    以上是几种常用的方法来保持上传文件的原始文件名。根据你的需求和具体情况,你可以选择其中一种或者多种方法来实现。

    2年前 0条评论
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    在PHP中,可以通过以下方法保持上传文件的文件名不变:

    1. 直接使用上传文件的原始文件名
    你可以使用`$_FILES`全局数组来访问上传文件的相关信息。其中,`name`键存储了上传文件的原始文件名。你可以直接将原始文件名用于保存上传文件。

    “`php
    $uploadedFile = $_FILES[‘file’];
    $originalName = $uploadedFile[‘name’];
    $filePath = ‘uploads/’ . $originalName;

    if(move_uploaded_file($uploadedFile[‘tmp_name’], $filePath)) {
    echo “文件上传成功”;
    } else {
    echo “文件上传失败”;
    }
    “`

    在上面的例子中,`$filePath`变量指定了上传文件保存的路径,其中`uploads/`是保存上传文件的目录. 你可以根据实际需求修改路径。

    2. 根据文件扩展名生成唯一文件名
    如果你希望文件名不重复,可以使用一个唯一的文件名来保存上传文件。可以使用`uniqid()`函数生成唯一文件名,并结合上传文件的扩展名来构造完整的文件名。

    “`php
    $uploadedFile = $_FILES[‘file’];
    $originalName = $uploadedFile[‘name’];
    $extension = pathinfo($originalName, PATHINFO_EXTENSION);
    $newFileName = uniqid() . ‘.’ . $extension;
    $filePath = ‘uploads/’ . $newFileName;

    if(move_uploaded_file($uploadedFile[‘tmp_name’], $filePath)) {
    echo “文件上传成功”;
    } else {
    echo “文件上传失败”;
    }
    “`

    上述代码中,`$newFileName`通过`uniqid()`函数生成的唯一的文件名,然后使用`pathinfo()`函数获取上传文件的扩展名,并与唯一文件名拼接成完整的文件名,最后将上传文件保存到指定路径。

    3. 根据文件内容的哈希值生成唯一文件名
    除了根据文件扩展名生成唯一文件名之外,你还可以根据文件内容的哈希值来生成唯一文件名。可以使用`md5()`或`sha1()`等哈希算法来计算文件内容的哈希值,并将哈希值与上传文件的扩展名拼接成完整的文件名。

    “`php
    $uploadedFile = $_FILES[‘file’];
    $originalName = $uploadedFile[‘name’];
    $extension = pathinfo($originalName, PATHINFO_EXTENSION);
    $hash = md5_file($uploadedFile[‘tmp_name’]);
    $newFileName = $hash . ‘.’ . $extension;
    $filePath = ‘uploads/’ . $newFileName;

    if(move_uploaded_file($uploadedFile[‘tmp_name’], $filePath)) {
    echo “文件上传成功”;
    } else {
    echo “文件上传失败”;
    }
    “`

    在上述代码中,`md5_file()`函数用于计算上传文件内容的哈希值,并将哈希值与上传文件的扩展名拼接成完整的文件名。然后将上传文件保存到指定路径。

    通过以上方法,你可以保持上传文件的文件名不变,并确保文件名的唯一性。根据实际需求选择合适的方法来保存上传文件。

    2年前 0条评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部