我正在练习PHP和AJAX,但我遇到了一些问题!
在选择要上传的图片后,我试图从jQuery警报中获取文件名,类型,大小,但我一直得到一个空字符串。
<form action="upload_file.php" method="post" enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="my_file" />
<input type="submit" name="submit" value="Submit" />
</form>
此表单包含一个 JS 文件,该文件有一个ajax脚本,向php页面询问已发布文件的文件名,但它不起作用。在尝试获取此数据之前,是否需要上传文件?
JS文件:
$("input").change (function () {
$.post("preview_uploader.php", { action:"get_size" }, function (data) {
alert (data);
});
});
PHP文件 preview_uploader.php :
<?php
if ($_POST["action"] == "get_test") print "text string test works!";
if ($_POST["action"] == "get_name") print $_FILES["my_file"]["name"];
if ($_POST["action"] == "get_size") print $_FILES["my_file"]["size"];
if ($_POST["action"] == "get_type") print $_FILES["my_file"]["type"];
?>
如果我使用带有php页面的action:"get_test"
进行测试,但它不适用于$_FILES["my_file"]["name"]
或$_FILES["my_file"]["type"]
等,则可以正常运行...
有人可以帮我找到我错的地方吗?
谢谢!
答案 0 :(得分:2)
您的JS脚本正在向服务器发送单独的请求,因此您的PHP不知道该文件,并且$ _FILES [“my_file”]不是有效的索引。
您无需前往服务器获取文件名,只需使用此命令获取文件名:
$("input[type=file]").val();
我相信它也会带回路径,因此您需要删除路径以获取文件名。
如果您正在尝试获取所有其他详细信息(文件大小等),您将需要首先上传文件(这会使您尝试做的事情失败)或使用像这些解决方案一样的Flash + JavaScript组合:
答案 1 :(得分:1)
你可以实际上使用jQuery获得大小。看看这个问题的答案:
How to check file input size with jQuery?
您可以使用给定的方法获取名称,大小和类型。一般认为,这是不可能的。你不能总是相信你听到的一切......