我已经制作了一个表单来传递服务器上的xml文件。虽然当它正确地将文件发送到服务器时,似乎页面重新加载并且文件名的值丢失并且我的javascript代码没有返回任何内容。 但是,如果我删除该行
<input type="submit" />
从下面的代码中将文件名保存在变量x中,但它不会将文件发送到服务器。 我想在服务器上发送文件并将其名称保存到变量中,以便在任何其他javascript函数中使用。
<?php
$uploads_dir='/web/stud/external/scomvs2/epicurus';
if(isset($_FILES['xml_file1'])){
$errors= array();
$file_name = $_FILES['xml_file1']['name'];
$file_size =$_FILES['xml_file1']['size'];
$file_tmp =$_FILES['xml_file1']['tmp_name'];
$file_type=$_FILES['xml_file1']['type'];
$file_ext=strtolower(end(explode('.',$_FILES['xml_file1']['name'])));
$expensions= array("xml","XML");
if(in_array($file_ext,$expensions)== false){
$errors[]="extension not allowed, please choose an xml file.";
}
if($file_size > 2097152){
$errors[]='File size must be excately 2 MB';
}
if(empty($errors)==true){
move_uploaded_file($file_tmp,"$uploads_dir/$file_name");
echo "Success";
}else{
print_r($errors);
}
}
?>
<html>
<body>
<form action="" method="POST" enctype="multipart/form-data">
<input type="file" id="uploading" name="xml_file1"/>
<input type="submit" />
</form>
<button type="button" onclick="myFunction()">Try it</button>
<p id="demo"></p>
<script>
function myFunction() {
var x = document.getElementById("uploading").value;
document.getElementById("demo").innerHTML = x;
}
</script>
</body>
</html>
答案 0 :(得分:1)
您可以在我们的Javascript部分添加以下内容:
<script>
function myFunction() {
var x = <?=json_encode($file_name)?>;
document.getElementById("demo").textContent = x;
}
</script>
现在,当您在Javascript中调用该函数时, demo 元素将显示文件名。请注意,最好使用 textContent 而不是 innerHTML ,但使用文件名时,您不会有使用HTML会解释的特殊字符(<>&
)的风险。
现在您还应该确保始终定义 $ file_name 。因此,在PHP代码的顶部,添加:
$file_name = '';
您可以直接在 demo 标记中注入文件名,而不是在Javascript代码中注入文件名,如下所示:
<p id="demo"><?=htmlspecialchars($file_name)?></p>
然后你不需要Javascript来填写它,如果这就是你想做的。