有没有人知道上传文件(.mp3或.wav或.txt或.whatever)的好方法,并在移动到目录之前压缩此文件?
因此用户上传.mp3文件,在此文件移动到特定目录之前,它将被压缩然后移动。
请告知。
谢谢
答案 0 :(得分:5)
看一下Zip扩展名:
http://www.php.net/manual/en/zip.examples.php
我查看了您链接的代码(如果您将其包含在问题中会很好)并进行了一些更改:
$nameFile = $_FILES['file']['name'];
$tmpName = $_FILES['file']['tmp_name'];
$download_folder = './files/';
$zip = new ZipArchive();
$fileconpress = $download_folder.$nameFile.".zip";
$conpress = $zip->open($fileconpress, ZIPARCHIVE::CREATE);
if ($conpress === true)
{
$zip->addFile($tmpName);
$zip->close();
echo $fileconpress."<br/>";
echo "yess !! Success!!!! ";
}
else echo " Oh No! Error";
重要的部分以及可能导致错误的是$ download_folder。您需要定义要保存文件的路径。
我还删除了fread()
,您只需将文件直接加载到addFile()
答案 1 :(得分:0)
您可以使用PHP运行shell命令并使用它们制作第三方软件/您的操作系统来为您压缩文件。见 - http://php.net/manual/en/function.shell-exec.php
或者有针对php的Zip扩展,请参阅 - http://php.net/manual/en/book.zip.php
答案 2 :(得分:0)
我认为,尤其是当您不知道客户或用户上传哪种文件时,这是在zip exe中上传每种类型文件的最佳方法。 通过这种方式,您应该首先在要上传文件的服务器中设置方向,然后使用:
<?php
$target_dir = '/www/yoursite.com/public_html/sth';
$ext = explode(".", $_FILES["filename1"]["name"]);
$ext = end($ext);
$newfilename = 'resume'. '.' .$ext;
$zip = new ZipArchive();
$zip->open('/www/yoursite.com/public_html/sth .'/'.'resume'.'.zip',
ZipArchive::CREATE);
$zip->addFile($_FILES['filename1']['tmp_name'],$newfilename);
$zip->close();
?>
以朋友的身份关注我的向导
当您想使用此代码时,您应该了解以下几点:
在这部分代码中,我想获取文件扩展名,直到我 压缩文件类型
$ext = explode(".", $_FILES["filename1"]["name"]);
$ext = end($ext);
$newfilename = 'resume'. '.' .$ext;
在这里我在服务器中命名了我的zip文件
$zip->open('/www/yoursite.com/public_html/sth .'/'.'resume'.'.zip',
,在代码结尾,我们得到了我在此处命名为的upoloade文件 “ filename1(这是您在html中输入的名称)”
$zip->addFile($_FILES['filename1']['tmp_name'],$newfilename);