我从输入类型文件中获取文件输入并在onchange事件上调用javascript函数,如下所示:
<input type="file" onchange="readTheFile(this)">
javascript函数调用包含另一个PHP函数的php文件。 javascrit函数是:
function readTheFile(file){
$.ajax(
{
url: 'readFile.php',
type: 'GET',
data: 'fileLoc= '+file,
success: function(output)
{
document.getElementById("content").innerHTML = output ;
}
}
);
}
</script>
我总是收到错误:
Warning: fopen( [object HTMLInputElement]) [function.fopen]: failed to open stream: No such file or directory in D:\xampp\htdocs\sha\readFile.php on line 3
Unable to open file!
readFile.php的内容是:
<?php
function readFiles($fileLoc){
$file = fopen($fileLoc, "r") or exit("Unable to open file!");
while(!feof($file)) {
echo fgets($file);
}
fclose($file);
}
if(isset($_GET['fileLoc'])){
echo readFiles($_GET['fileLoc']);
}
?>
答案 0 :(得分:1)
我建议使用FILE API方法(仅限现代浏览器)
请参阅http://www.html5rocks.com/en/tutorials/file/dndfiles/
示例:
<input type="file" id="files" />
<script>
function handleFileSelect(evt) {
var files = evt.target.files; // FileList object
for (var i = 0, f; f = files[i]; i++) {
var reader = new FileReader();
// Closure to capture the file information.
reader.onload = (function(theFile) {
return function(e) {
alert(e.target.result);
};
})(f);
reader.readAsDataURL(f);
}
}
document.getElementById('files').addEventListener('change', handleFileSelect, false);
</script>
<强> Live example here 强>
答案 1 :(得分:0)
首先将文件移动到目录中,然后您的rest函数将起作用。
这是一个通过ajax上传文件的jquery插件:jQuery Form Plugin
此插件将$_FILES
的参数发送到您的php文件,然后首先将文件移动到您的目录,然后使用fopen()
来阅读和显示内容。
答案 2 :(得分:-1)
您似乎正在提出格式错误的请求。根据文档,它说数据选项直接附加到GET请求的URL。我不认为这可能是因为你正在使用正确的PHP脚本。
https://api.jquery.com/jQuery.ajax/
尝试更改为
function readTheFile(file){
$.ajax(
{
url: 'readFile.php',
type: 'GET',
data: { fileLoc: file },
success: function(output)
{
document.getElementById("content").innerHTML = output ;
}
}
);
}
另外,我没有看到你从$ _GET数组中提取$ fileLoc变量的位置。它可能只是从您的代码中排除。