1

如何在 php 中打开/查看以编辑上传的文件?

我试过这个,但它没有打开文件。

$my_file = 'file.txt';
$handle = fopen($my_file, 'r');
$data = fread($handle,filesize($my_file));

我也试过这个,但它不会工作。

$my_file = 'file.txt';
$handle = fopen($my_file, 'w') or die('Cannot open file:  '.$my_file);
$data = 'This is the data';
fwrite($handle, $data);

我想到的是,当您想要查看上传的简历、文档或任何其他 ms office 文件(如 .docx、.xls、.pptx)并能够编辑、保存和关闭上述文件时。

编辑:最新尝试的代码...

 <?php 
 // Connects to your Database 
 include "configdb.php"; 

 //Retrieves data from MySQL 
 $data = mysql_query("SELECT * FROM employees") or die(mysql_error()); 
 //Puts it into an array 
 while($info = mysql_fetch_array( $data )) 
 { 

 //Outputs the image and other data
 //Echo "<img src=localhost/uploadfile/images".$info['photo'] ."> <br>"; 
 Echo "<b>Name:</b> ".$info['name'] . "<br> "; 
 Echo "<b>Email:</b> ".$info['email'] . " <br>"; 
 Echo "<b>Phone:</b> ".$info['phone'] . " <hr>"; 
 //$file=fopen("uploadfile/images/".$info['photo'],"r+");
 $file=fopen("Applications/XAMPP/xamppfiles/htdocs/uploadfile/images/file.odt","r") or exit("unable to open file");;
 }
 ?> 

我收到错误:

Warning: fopen(Applications/XAMPP/xamppfiles/htdocs/uploadfile/images/file.odt): failed to open stream: No such file or directory in /Applications/XAMPP/xamppfiles/htdocs/uploadfile/view.php on line 17
unable to open file

该文件在该文件夹中,我不知道它不会找到它。

4

2 回答 2

1

它可能是:

  1. 服务器上的权限问题。如果是linux机器,试试chmod 754 Applications/XAMPP/xamppfiles/htdocs/uploadfile/images/file.odt(你可能需要root)。

  2. apache(或您可能使用的任何网络服务器)的问题。确保您已在该站点的配置文件中定义了一个目录条目。文档在这里

虽然,如果我没记错的话,odt 文件将只是二进制数据而不是文本信息。这可能是你要找的,我不知道。如果您只想阅读实际文本,并且对使用某些库来提取它不感兴趣,则需要将其保存为纯文本。如果你真的想在浏览器中编辑这些文件,你需要的不仅仅是fopen.

于 2013-11-09T03:50:36.860 回答
0

对于基于文本的文件,您可以使用file_get_contentsfile_put_contents

但是,ODT 文件是 zip 压缩的 XML 文件,因此您需要先解压缩它们:

$zip = new ZipArchive;
$res = $zip->open('Applications/XAMPP/xamppfiles/htdocs/uploadfile/images/file.odt');
if ($res === TRUE) {
  $zip->extractTo('/tmp/myOdt.xml');
  $zip->close();
}

$data = file_get_contents('/tmp/myOdt.xml');

$data .= 'add this to the end';

file_put_contents('path/to/file.txt', $data);

但是,您的问题似乎与文件的实际路径有关。尝试使用相对路径:"images/file.odt"

于 2013-11-09T03:54:14.740 回答