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: false
和 contentType: false
的使用
我正在尝试建立
我可以使用 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: false
和 contentType: false