gpt4 book ai didi

javascript - 为什么当我单击提交按钮时丢失了文件名值

转载 作者:行者123 更新时间:2023-12-03 07:44:56 26 4
gpt4 key购买 nike

我制作了一个表单来在服务器上传递 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>

最佳答案

您可以在我们的 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 = '';

您也可以将文件名直接注入(inject)到 demo 标记中,而不是在 Javascript 代码中注入(inject)文件名,如下所示:

<p id="demo"><?=htmlspecialchars($file_name)?></p>

那么你不需要 Javascript 来填充它,如果这就是你想要做的。

关于javascript - 为什么当我单击提交按钮时丢失了文件名值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35248055/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com