php - 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 脚本中获取预订和文件信息。现在我将如何将文件重命名为预订?
解决方案
正如您用于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);
});
});
推荐阅读
- python - 如果测试方法驻留在所有测试通用的类中,如何记录测试类的名称?
- javascript - 当大量请求非常快时如何解决“套接字挂断错误”
- html - 使用存储在数据库中的值保留单选按钮和日期字段的值
- python-3.x - 检查项目是否存在而不区分大小写
- ios - 谷歌地图显示位置,但不显示标记 - swift4
- linux-kernel - 内核试图执行受 NX 保护的页面——利用尝试?
- webpack - 为什么我的浏览器在使用 webpack 对节点模块进行代码拆分后显示空白页面?
- kubernetes - 一个 Kubernetes Ingress 面向多个集群?范围问题
- ios - 在 ionic 3 中使用 FilePicker-Phonegap-iOS-Plugin 进行离子服务时输入错误
- database - Cassandra 表中的最大分区数以及它如何依赖于磁盘空间?