【发布时间】:2019-12-07 12:33:38
【问题描述】:
尝试使用输入框中的名称将 jpg 文件保存到服务器,但保存为 Array.jpg
html文件内容:
<input type="text" name="datepicker" id="datepicker">
php文件内容:
$image = $_POST['image'];
$location = "upload/";
$image_parts = explode(";base64,", $image);
$image_base64 = base64_decode($image_parts[1]);
$filename = ['datepicker'].'.jpg';
echo $_REQUEST['datepicker'];
$file = $location . $filename;
file_put_contents($file, $image_base64);
来自 html 的脚本:
<script type='text/javascript'>
function screenshot(){
html2canvas(document.body).then(function(canvas) {
// Get base64URL
var base64URL = canvas.toDataURL('image/jpeg').replace('image/jpeg', 'image/octet-stream');
// AJAX request
$.ajax({
url: 'ajaxfile.php',
type: 'post',
data: {image: base64URL},
success: function(data){
console.log('Upload successfully');
}
});
});
}
</script>
没有错误信息,只是用错误的名字保存。
已经尝试过:
$filename = ['datepicker']; - saves as: Array (no extension).
$filename = $_POST['datepicker']; (nothing gets saved at all).
$filename = $_POST['datepicker'].'.jpg'; (saves as .jpg (just extension, no file name).
$filename = $_FILES['datepicker']['name']; (nothing gets saved at all).
$filename = $datepicker; (nothing gets saved at all).
$filename = "screenshot_".uniqid().'.jpg'; saved as screenshot_5d40158a1dad5.jpg
在我看来,表单名称字段 datepicker 对 php 文件根本不可用。 也许这是因为对 php 文件的调用(或您调用的任何名称)都包含在 javascript 标签中?我不知道。在尝试了 24 小时后才感到沮丧。
我想我必须将表单名称字段 datepicker 传递给 ajax 代码,然后在 php 文件中使用它。 有谁知道如何修改我的代码来做到这一点?
我现在已经解决了这个问题。我不得不修改 html 中的 javascript 以在文本输入框中包含一个带有 vale 的 var,并更新 ajax 以将其包含在数据行中。
<script type='text/javascript'>
function screenshot(){
html2canvas(document.body).then(function(canvas) {
// Get base64URL
var base64URL = canvas.toDataURL('image/jpeg').replace('image/jpeg', 'image/octet-stream');
var val1 = $('#datepicker').val();
// AJAX request
$.ajax({
url: 'ajaxfile.php',
type: 'post',
//data: {image: base64URL, name: datepicker},
data: {image: base64URL, datepicker: val1},
success: function(data){
console.log('Upload successfully');
}
});
});
}
</script>
然后我必须用文件名更新 php 文件,以在文件名中包含表单中的 txt 数据:
<?php
$image = $_POST['image'];
$location = "upload/";
$image_parts = explode(";base64,", $image);
$image_base64 = base64_decode($image_parts[1]);
$filename = $_POST['datepicker'].'.jpg';
$file = $location . $filename;
file_put_contents($file, $image_base64);
?>
【问题讨论】:
-
如果您使用 post take as $_POST[“name”] 或 fir get $_GET[“name”] for basic php,您将收集名称作为数组
-
您正在这里主动创建一个数组
['datepicker']- 这是一个包含一个元素的数组,即字符串datepicker。由于您随后尝试将其与后缀.jpg连接,因此该数组被强制转换为字符串,其结果始终是 word“数组”。 -
谢谢 samuhay,我使用下面的示例尝试了 $_POST[“name”],但这仅保存为 .jpg。我尝试修改该行以使用 $_GET[“name”] ($_GET['datepicker'].'.jpg';) 但根本没有上传任何内容。
-
谢谢 misorude。我不知道这是在创建一个数组。我对此非常陌生。永远不需要创建数组,因为它始终只是一个文件。我看过的几乎所有示例都提供了这种方法,尽管只是针对一个文件(但他们没有添加 ext)。
-
我将html文件中的脚本代码添加到原帖中
标签: php post user-input