PHP - 上传前重命名文件

PHP - renaming a file before uploading

我正在尝试建立

我可以使用 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;
  }
?>

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

我需要做的就是将文件重命名为booking,最后上传到需要的目录。

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

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

正如您使用 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);
        });
});

要修复您的 ajax 请求(尤其是非法调用),请使用以下 javascript 代码

$('#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());

    $.ajax({
        type: "POST",
        url: 'process/fileUpload.php',
        data: form_data,
        processData: false,
        contentType: false,
        success: function(data) { console.log(data); }
    });
});

注意 processData: falsecontentType: false

的使用