2011-07-14 28 views
0

該函數創建.ini文件並將其保存到服務器上的文件夾中。我需要做些什麼來創建一個版本,讓用戶選擇在本地保存文件?使用「另存爲」對話框將fwrite(服務器)轉換爲fwrite(本地)

function wpseTest() 
{ 
    $query = "SELECT option_name, option_value FROM wp_options where option_name like 'test|_%' escape '|' AND option_value > ''"; 
    global $wpdb; 
    $matches = $wpdb->get_results($query); 

    $mySettings = "[settings]\r\n"; 

    foreach ($matches as $result){ 
     $mySettings .= $result->option_name; 
     $mySettings .= ' = '; 
     $mySettings .= '"'.str_replace("\r\n", "", addslashes($result->option_value)).'"'; 
     $mySettings .= "\r\n"; 
    } 
    $mySettingsFileLocation = WP_PLUGIN_DIR.'/test/test-backup.ini'; 
    $mySettingsFile = fopen($mySettingsFileLocation, 'w'); 
    fwrite($mySettingsFile, $mySettings);fclose($mySettingsFile); 
    copy($mySettingsFileLocation, WP_PLUGIN_DIR.'/test/test-'.date("F-j-Y-g-i-s-a").'.ini'); 
} 

回答

0

好吧,如果你只是想讓人下載,然後再存儲在本地(調用wpseTest()),並將其重定向到某個地方用適當的標題(這可以通過iframe或完成一個新的窗口/標籤):

header("Content-type: application/force-download"); 
header("Content-Disposition: attachment; filename=\"backup.ini\""); 
header("Content-Length: ".filesize(WP_PLUGIN_DIR.'/test/test-backup.ini')); 
readfile(WP_PLUGIN_DIR.'/test/test-backup.ini'); 
+0

不能得到它的工作,但它可能是因爲我從一個jQuery GET調用PHP。爲什麼Content-Disposition頭中的文件名不同? –

+0

它不一定是,但通常我沒有在任何用戶面臨的「測試」。 – cwallenpoole

+0

謝謝。 「測試」一詞僅用於「測試」。還沒有用戶面臨。但我明白你的觀點:-) –