2014-06-13 5 views
0

Я использую следующий код, который я говорил с php.net Например:Невозможно загрузить файл .sqlite с сервера

<?php 

// open the file in a binary mode 
$name = './db.sqlite'; 
$fp = fopen($name, 'rb'); 

// send the right headers 
header("Content-Type: application/force-download"); 
header("Content-Length: " . filesize($name)); 

// dump the database and stop the script 
fpassthru($fp); 
exit; 

?> 

Когда я пытаюсь запустить этот скрипт из URL моего браузера, Я получаю предупреждение:

не удается изменить информацию в заголовке - заголовки уже отправленные

Мое требование заключается в основном создать PHP скрипт, который я могу использовать, чтобы загрузить файл .sqlite в мое приложение IOS. Но я думаю, что сначала он должен работать напрямую через URL. Я новичок в PHP, поэтому, пожалуйста, помогите мне.

Я также попытался выяснить, почему я получаю это предупреждение в следующей ссылке:

http://www.tech-recipes.com/rx/1489/solve-php-e

Но это не решить мою проблему.

Вопрос 2.) Я планировал использовать NSURLSession для получения файла в изолированной программной среде приложения iOS после того, как PHP-скрипт работает и работает. Правильно ли это?

+0

Еореп, скорее всего, бросает ошибку, вы должны ** сделать некоторые проверки **, что FOPEN работал перед установкой заголовков и продолжения. .. –

+0

Может быть предупреждение, потому что вы не можете открыть ./db.sqlite, поэтому PHP должен отправить вывод, и вы вызываете header() после. Более коварным, может быть кодирование файлов, если вы находитесь в UTF-8 с спецификацией: невидимый знак байтового заказа перед тем, как открыть тэг PHP, будет печататься, а ваш заголовок() сбой – niconoe

+0

Я попытался распечатать содержимое файла: $ filecontents = file_get_contents ($ name); print $ filecontents; Вся тарабарщина печатается. Это из-за какой-то кодировки? Если да, как я должен печатать закодированный файл? –

ответ

0

Я не мог заставить свой PHP работать правильно, поэтому я нашел обходное решение.

Я использовал NSURLRequest, чтобы указать непосредственно на файл sqlite, находящийся на сервере, а затем использовать NSData для хранения его содержимого. Затем я сохранил файл в песочнице моего приложения (симулятора), и я могу запросить базу данных.

важный урок, который я узнал: «SQLite файлы базы данных не читаемый человеком»

Смежные вопросы