2013-09-21 1097 views
5

Tôi đang cố gắng tạo tập lệnh tải lên một tệp zip nhất định, hiện là "test.zip" rồi giải nén tệp đó. Tôi tìm thấy một số câu trả lời trong trang web này về cách giải nén nhưng không có ý tưởng làm thế nào để làm điều đó trên một máy chủ FTP. Tất cả bằng cách sử dụng PHP Xin vui lòng.Tải lên tệp .zip lên FTP và giải nén tệp bằng cách sử dụng PHP

đang hiện tại:

$zip = new ZipArchive; 
$zip->open('test.zip'); 
$zip->extractTo('./'); 
$zip->close(); 

Cảm ơn một lần nữa :)

+0

Đó có vẻ như nó sẽ làm giải nén. Bạn có muốn lập trình FTP nó không? Trước hoặc sau khi giải nén? Đến hoặc từ máy chủ đang giải nén? – halfer

Trả lời

4

Trước khi giải nén, bạn có thể tải lên mã zip bằng cách sử dụng biểu mẫu (tạo vùng quản trị của riêng bạn?/Localhost only?). Tôi sao chép này từ mã của tôi để tải lên hình ảnh và sẽ chỉ tải lên .zip file phần HTML:

<form action='file.php' enctype='multipart/form-data' method='post'> 
    <p>Please Upload a ZIP File.</p> 
    <input type='file' name='file'> 
    <input type='submit'/> 
</form> 

PHP phần:

$temp = explode(".", $_FILES["file"]["name"])[1]; //Get the extension 
if($temp == "zip"){ 
    move_uploaded_file($_FILES["file"]["tmp_name"],"unzipme.zip") or die("Couldn't upload. Check permissions and retry."); 
      //Relocate home? 
    header("Location: /"); 
    exit(); 
} 

Bạn cần quyền truy cập để tải lên thư mục của bạn, www cập nhật hoặc một cái gì đó tương tự.

Hy vọng điều này sẽ hữu ích.

+0

thực sự tôi có nghĩa là nhóm dữ liệu www * –

1

Trước tiên, bạn nên tải lên kho lưu trữ zip đến máy chủ. Đây là một ví dụ về cách thực hiện những thứ FTP cơ bản trong PHP.

http://www.php.net/manual/en/ftp.examples-basic.php

Sau đó bạn sẽ có thể giải nén các tập tin trên máy chủ bằng cách sử dụng phương pháp bạn mô tả trong câu hỏi.

+0

Sry Tôi quên đề cập đến nó, tôi đã tạo ra một kịch bản tải lên các ZIP, chỉ cần giải nén nó trên máy tính, tôi không biết làm thế nào để cấu hình phương pháp này để làm việc với phiên FTP. – Beater

+0

@Beater Tôi không hiểu tại sao bạn cần cấu hình mọi thứ. Nếu tệp zip nằm trên máy và bạn biết tên tệp của nó, bạn có thể giải nén nó, phải không? –

1

Bạn cần quyền truy cập để thực thi các lệnh hoặc chương trình trên máy bạn đang tải lên hoặc khả năng tải lên tập lệnh mà bạn có thể thực thi qua URL. Nếu bạn đang tải lên qua FTP tới thư mục máy chủ web có thể chạy PHP, sau đó tải lên kho lưu trữ zip của bạn và tệp unzip.php tại đó và tải trang unzip.php trong trình duyệt của bạn.

+0

Không có bất kỳ loại quyền truy cập nào, Điều này được thực hiện cho những người khác tải lên như tệp PhpBB vào thư mục FTP của họ .. Cảm ơn bạn đã giúp đỡ – Beater

+0

Thật không may, giải nén là lệnh cần chạy trên máy nơi giải nén xảy ra. Nếu bạn không có quyền truy cập SSH hoặc telnet, và nếu tài khoản FTP không bao gồm thư mục có thể truy cập web, bạn sẽ không thể giải nén nó khi nó đã hết. Tuy nhiên, bạn có thể tạo một tệp kê khai mô tả mọi thứ trong kho lưu trữ zip và gửi nó đi cùng nếu đó là tất cả những gì bạn cần. Tôi thực sự không hiểu tại sao bạn cần chúng giải nén nếu nó không phải là một vị trí có thể truy cập web. – wwwslinger

0

Đây là mã cho Extract thư mục trong FTP của bạn, tạo một bản sao tập tin Php mới bên dưới mã và chạy nó:

$path = getcwd(); 

$zip = new ZipArchive; 

$res = $zip->open('yourZippedFolder.zip'); 

if ($res === TRUE) { 

    $zip->extractTo($path.'/maunil/'); 

    $zip->close(); 

    echo 'Successfully Extracted'; 

} 

else 
{ 

echo 'failed to Extract'; 

}