2011-03-11 69 views
0

我想获取上传文件的完整路径。 PHP代码是这样的:PHP上传路径中没有斜杠

<?php 
$destination_path = getcwd() . DIRECTORY_SEPARATOR; 

$result = 0; 

$target_path = $destination_path . basename($_FILES['thefile']['name']); 

if(@move_uploaded_file($_FILES['thefile']['tmp_name'],*$target_path)) { 
$result = 1; 
} 

?> 
<script language="javascript" type="text/javascript"> 
//d = '<?php echo basename($_FILES['thefile']['name']); ?>'; 
d = '<?php echo $target_path; ?>'; 
window.top.window.phpUpload(d); 
</script> 

我可以打开与rem'd脱节的JSON文件,但我需要的路径,在会话结束返回。用警报进行测试时,显示的是完整路径,没有斜杠,文件名缺失的首字母'n'...

任何帮助非常感谢。

(点击名称,然后在此test site开放nset.json看到我想要做的)

回答

0

你的意思是完整路径客户计算机上的文件? JavaScript安全性不会揭示这一点。它只会将实际的文件名发送到服务器。

+0

这应该是一个评论,不是答案。 – fredley 2011-03-11 00:56:41

+0

谢谢杰里米。解决了斜线问题后,我发现你说的是什么。我想让游客选择从窗口保存到文件或c + p。所以现在我会给出一个下载链接作为选项。 – 2011-03-11 02:19:07

3

你假设在Windows上使用这个,其中DIRECTORY_SEPARATOR是反斜杠。如果文件名以n然后开始你的JavaScript代码最终会是这样的:

d = '..\path\nameoffile.txt'; 

的Javascript不像PHP将在单引号的字符串解释\n

解决你的困境是要么不使用DIRECTORY_SEPARATOR,或输出正确转义JavaScript字符串:

d = <?php echo json_encode($target_path); ?>; 
+0

谢谢在所有浏览器中运行正常的mario - localhost和主机 – 2011-03-11 02:15:25

+0

我经常在Windows上开发,然后上传到Linux服务器。我总是使用正斜杠/文件名。它由PHP正式支持,我从来没有任何兼容性问题。 – 2011-03-11 02:55:39

相关问题