在网站中,我使用javascript将文件从本地计算机上传到网络服务器。
我使用javascript将文件上传到服务器并更新表单文本字段。 在同一文档上,在表单外部还有一个图像,我想用刚刚上传的图像文件更新图像。
这是我用来实现这两件事的javascript:
更改表单文本字段:
opener.document.form1.logo_material.value="?php echo $prefijo.$str;?>";
(由于编辑限制,<
之前的?php
被省略
这部分工作正常。
更改上传图片的图片:
opener.document.getElementById("materiallogo").src="..url hidden here../?php echo $prefijo.$str;?>";
(由于编辑限制,<
之前的?php
被忽略)
这部分#2不起作用。欢迎任何帮助。感谢
修改
用于调用JS函数的表单按钮:
<input type="button" name="button" id="button" value="Upload logo" onclick="javascript:subirimagen();" />
主文档中的JavaScript函数:
<script>
function subirimagen()
{
self.name = 'opener';
remote = open('subirimagenmaterial.php','remote','width=300,height=150,location=no,scrollbars=yes, menubar=no, toolbars=no,resizable=yes,fullscreen=yes, status=yes');
remote.focus();
}
</script>
管理所有文件上传和文本字段的PHP更改,还应管理图像更新:
subirimagenmaterial.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Upload Material logo</title>
</head>
<body>
<?php
if ((isset($_POST["enviado"])) && ($_POST["enviado"]=="form1")){
$length = 10;
$randomString = substr(str_shuffle("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"), 0, $length);
$prefijo = $randomString;
$nombre_archivo = $_FILES['userfile']['name'];
$file_upload = "true";
if ($_FILES['userfile']['size']>200000){
$file_upload="false";
}
if ($file_upload == 'true'){
$str=preg_replace('/\s+/', '', $nombre_archivo);
$str =preg_replace('~&([a-z]{1,2})(acute|cedil|circ|grave|lig|orn|ring|slash|th|tilde|uml);~i', '$1', htmlentities($str, ENT_QUOTES, 'UTF-8'));
move_uploaded_file($_FILES['userfile']['tmp_name'],"materials/".$prefijo.$str);
?>
<script>
opener.document.form1.logo_material.value="<?php echo $prefijo.$str;?>";
opener.document.getElementById("materiallogo").src="h..URL hidden here/<?php echo $prefijo.$str;?>";
self.close();
</script>
<?php
}
else
{
echo "El archivo seleccionado es superior a 200KB, inténtalo de nuevo con otro archivo de tamaño inferior a 200KB.<BR><BR><BR>";?>
<input type='submit' name='submit' value='Reintentar' onClick="window.location.reload()" />
<?php }
?>
<?php
}
else {?>
<form id="form1" name="form1" method="post" action="subirimagenmaterial.php" data-ajax="false" enctype="multipart/form-data">
<p>
<input name="userfile" type="file" />
</p>
<p>
<input type="submit" name="button" id="button" value="Subir imagen del evento" />
<input type="hidden" name="enviado" value="form1" />
</p>
</form>
<?php }?>
</body>
</html>
答案 0 :(得分:1)
我认为你应该使用Node.replaceChild。
var curImg = opener.document.getElementById("materiallogo");
var newImg = document.createElement("img");
// give it an id attribute
newImg.setAttribute("id", curImg.id);
var parentDiv = curImg.parentNode;
// replace existing node curImg with the new img element newImg
parentDiv.replaceChild(curImg, newImg);
newImg.src = '' // <-------------- HERE PUT NEW PATH FOR IMG
答案 1 :(得分:0)
尝试将子窗口中的代码更改为:
window.opener.document.getElementById('materiallogo').src="something"
答案 2 :(得分:0)
试试这个
result("foo:8:bar") = "val2"
val result= Map("foo:7:bar" -> "val1",
"foo:8:bar" -> "val2",
"foo:9:bar" -> "val1")