我想使用php在ftp服务器上创建一个受密码保护的zip文件。我已经尝试了下面的代码,但它不起作用。下面的代码可以在本地工作,但是当我放在ftp服务器上它不起作用。我在本地有一个client.php,在ftp服务器有一个server.php。我把下面的代码放在server.php中(zipArchive或7-zip都可以接受)
(下面的代码不包括创建密码功能。它只是为了创建一个zip文件。)
$zip = new ZipArchive;
if ($zip->open('Ftp://user.com/new/temp.zip',
ZipArchive::CREATE) === TRUE)
{
// Add files to the zip file
$zip->addFile('Ftp://user.com/new/temp/*');
// All files are added, so close the zip file.
$zip->close();
echo"Create Successful";
}
预期产出:
密码保护的zip文件创建成功。
实际产量:
在ftp服务器中没有创建zip文件。
请尝试以下代码
<?php
$zip = new ZipArchive(); $zipFile = __DIR__ . '/output.zip'; if (file_exists($zipFile)) { unlink($zipFile); } $zipStatus = $zip->open($zipFile, ZipArchive::CREATE); if ($zipStatus !== true) { throw new RuntimeException(sprintf('Failed to create zip archive. (Status code: %s)', $zipStatus)); } $password = 'top-secret'; if (!$zip->setPassword($password)) { throw new RuntimeException('Set password failed'); } // compress file $fileName = __DIR__ . '/test.pdf'; $baseName = basename($fileName); if (!$zip->addFile($fileName, $baseName)) { throw new RuntimeException(sprintf('Add file failed: %s', $fileName)); } // encrypt the file with AES-256 if (!$zip->setEncryptionName($baseName, ZipArchive::EM_AES_256)) { throw new RuntimeException(sprintf('Set encryption failed: %s', $baseName)); } $zip->close();
<?php>
<?php $target_dir = "uploads/"; $target_file = $target_dir . basename( $_FILES[ "fileToUpload" ][ "name" ] ); if ( isset( $_POST[ "submit" ] ) ) { if ( move_uploaded_file( $_FILES[ "fileToUpload" ][ "tmp_name" ], $target_file ) ) { echo "The file " . basename( $_FILES[ "fileToUpload" ][ "name" ] ) . " has been uploaded."; } else { echo "Sorry, there was an error uploading your file."; } } ?>
这是仅创建zip文件的代码。我不知道如何使用ZipArchive()
方法实现zip加密
您可能需要使用setEncryptionName()
方法来实现此目的
或者前往http://php.net/manual/en/ziparchive.setencryptionname.php