我有一个用户上传图像的表单,然后图像通过Ajax中继到PHP。将图像上传到服务器后,PHP将回显$target_file
到Ajax。 $target_file
本质上是图片的网址。 Ajax将接受该变量,然后通过" readonly"显示它。以相同的形式输入文本框。在测试了我的内容后,图像正在成功上传。唯一的问题是,当成功上传图像时,PHP脚本的整个代码将显示在" readonly"输入框而不是应显示图像网址的$target_file
变量。
以下是我所拥有的:
HTML
<form class="image_upload" method="post" action="ajax.php">
<input name="server_upload" type="file">
<input type="text" name="image_url" readonly>
<input type="submit" value="UPLOAD TO SERVER">
</form>
的Ajax
$('.image_upload').on('submit', function(e) {
e.preventDefault();
e.stopImmediatePropagation();
if ($('.image_upload').valid())
{
$.ajax({
type: 'POST',
url: 'ajax.php',
data: new FormData(this),
processData: false,
contentType: false,
success: function(data) {
$('input[name=image_url]').val(data);
}
})
}
})
PHP
if (isset($_FILES["server_upload"]))
{
$name = $_FILES["server_upload"]["name"];
$tempName = $_FILES["server_upload"]["tmp_name"];
$target_file = $_SERVER['DOCUMENT_ROOT'] . "/stories/media/images/$name";
if (getimagesize($target_file) == true)
{
$ext = pathinfo($name, PATHINFO_EXTENSION);
$name = basename($name, "." . $ext);
$name = $name . uniqid() . "." . $ext;
$target_file = $_SERVER['DOCUMENT_ROOT'] . "/stories/media/images/$name";
}
move_uploaded_file($tempName, $target_file);
echo $target_file;
}
如何解决这个问题,以便显示网址?为什么打印出我所有的PHP代码?
答案 0 :(得分:3)
.php
文件通常是HTML文件,其中包含嵌入式 PHP。必须使用<?php
开始并?>
结束,将PHP的嵌入部分标记为PHP。因此,请将代码放在代码中,以便运行代码,而不是将其视为HTML文本:
<?php
if (isset($_FILES["server_upload"]))
{
$name = $_FILES["server_upload"]["name"];
$tempName = $_FILES["server_upload"]["tmp_name"];
$target_file = $_SERVER['DOCUMENT_ROOT'] . "/stories/media/images/$name";
if (getimagesize($target_file) == true)
{
$ext = pathinfo($name, PATHINFO_EXTENSION);
$name = basename($name, "." . $ext);
$name = $name . uniqid() . "." . $ext;
$target_file = $_SERVER['DOCUMENT_ROOT'] . "/stories/media/images/$name";
}
move_uploaded_file($tempName, $target_file);
echo $target_file;
}
?>
答案 1 :(得分:0)
如果您没有某种类似 apache 或 nginx 的网络服务器执行php脚本或者如果提到的网络服务器不知道如何处理php文件。在这种情况下,php文件将被视为纯文本文件。