首页 > 解决方案 > PHP - 在上传之前重命名文件

问题描述

我正在尝试建立我昨天提出的问题

我可以使用 ajax 方法将文件传递给 PHP。但我需要能够将文件名更改为预订号。由于某种原因,预订没有传递给 PHP 脚本。所以我尝试了以下方法:

$('#uploadBtn').on('click', function()
{
  var form_data = new FormData();
  form_data.append("file", document.getElementById('pdfFile').files[0]);
  var booking = $('#bookingNum').val();
  var partner = $('#partnerCode').val();

  $.post('process/fileUpload.php', {booking:booking, partner:partner}, function(data)
  {
    // Wasn't sure if I needed anything here
    console.log(data);
  });

  $.ajax({
    url: 'process/fileUpload.php',
    method:"POST",
    data: form_data,
    contentType: false,
    cache: false,
    processData: false,
    success: function(data){console.log(data);},
    error: function(jqHHR, textStatus, errorThrown){console.log('fail: ' + errorThrown);}     
  });
});

正如您将在上面注意到的,我必须使用 $.post 方法将预订和合作伙伴发送到 php 脚本。

然后我使用 $.ajax 将 form_data 发送到同一个脚本。

(根据我昨天提出的问题,我无法在一个动议中实现这一点。所以这是我第二次尝试完成这个。如果有办法在一个动议中发送所有信息,请参阅我上面链接的问题。)

所以在 PHP 脚本中,我可以通过几个函数获得我需要的所有项目:

<?php
  // from the $.post method
  if(isset($_POST['booking']))
  {
    $booking = $_POST['booking'];
    $partner = $_POST['partner'];
    getInfo($booking);
  }
  // from the $.ajax method
  if($_FILES['file'])
  {
    $file = var_dump($_FILES['file']);
    getFile($file);
  }

  function getInfo($booking)
  {
    return $booking;
  }

  function getFile($file)
  {
    return $file;
  }
?>

我知道它不漂亮,但我可以得到预订(我现在不需要合作伙伴),我也可以得到文件信息。

我需要做的是将文件重命名为预订,然后最后将其上传到必要的目录。

我不确定我是否必须组合这些功能,但我确实尝试过但无济于事。

话虽如此,我可以在 PHP 脚本中获取预订和文件信息。现在我将如何将文件重命名为预订?

标签: phpjqueryfunctionfile-uploadfile-rename

解决方案


正如您用于form_data.append()将文件数据添加到表单数据一样。您是否没有想到也使用它来添加预订和合作伙伴价值?

$('#uploadBtn').on('click', function()
{
    var form_data = new FormData();
    form_data.append("file", document.getElementById('pdfFile').files[0]);
    form_data.append('booking', $('#bookingNum').val());
    form_data.append('partner', $('#partnerCode').val());

    $.post('process/fileUpload.php', form_data, function(data)
        {
            console.log(data);
        });
});

推荐阅读