首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PHP -上载前重命名文件

PHP -上载前重命名文件
EN

Stack Overflow用户
提问于 2018-06-23 00:51:35
回答 2查看 49关注 0票数 0

我正在尝试在a question I asked yesterday的基础上构建。

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

代码语言:javascript
复制
$('#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脚本中,我可以通过几个函数获得所需的所有项:

代码语言:javascript
复制
<?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脚本中获得预订和文件信息。现在,我该如何将文件重命名为booking?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-23 01:17:14

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

代码语言: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的用法

票数 1
EN

Stack Overflow用户

发布于 2018-06-23 01:00:08

因为您使用form_data.append()将文件数据添加到formdata。您有没有想过也要用它来添加预订和合作伙伴值?

代码语言: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());

    $.post('process/fileUpload.php', form_data, function(data)
        {
            console.log(data);
        });
});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50992461

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档