Загрузить файл .txt и вставить содержимое в базу данных. - PullRequest
1 голос
/ 20 марта 2011

Я пытаюсь получить содержимое текстового файла, убедиться, что оно содержит 60000 символов или менее, и вставить его в базу данных.Если количество символов превышает 60 000, оно должно быть усечено.

Как этого добиться?

Ответы [ 3 ]

3 голосов
/ 20 марта 2011
<?php

// db connection here

// set path of uploaded file
$path = "./".basename($_FILES['filename']['name']); 

// move file to current directory
move_uploaded_file($_FILES['filename']['tmp_name'], $path)) {

// get file contents
$data = file_get_contents($path, NULL, NULL, 0, 60000);

// run the query
@mysql_query("INSERT INTO table (column) VALUES ('".$data."')");

// delete the file
unlink($path);

?>
<form enctype="multipart/form-data" action="" method="POST">
  <input name="filename" type="file" /><br />
  <input type="submit" value="upload file" />
</form>
1 голос
/ 20 марта 2011

Извините, если вы получили синтаксические ошибки, я на моем iPad.

<?php
$txt = $_FILES['files'];
$dbTxt = mysql_real_escape_string($txt);
if((!strlen($txt) =< 60000) && ($txt['type'] == "text/plain")) {
    die("Error here");
}
// no need for else as txt above 60000 have been locked away
move_uploaded_file($txt['temp_name'], 'tmp/'.$_server['remote_addr']);
$contents = file_get_contents('tmp/'.$_server['remote_addr']);
mysql_query("INSERT INTO txtUpload(text, ip) VALUES ($contents, $_server['remote_addr']");


$myFile = ''tmp/'.$_server['remote_addr'];
$fh = fopen($myFile, 'w') or die("can't open file");
fclose($fh);
Unlink($myFile);
1 голос
/ 20 марта 2011

На самом деле вам не нужно сначала проверять длину. Усечение можно сделать неявно:

$content = file_get_contents("asciiart.txt");
$content = substr($content, 0, 60000);

Это работает, потому что substr обрезает строку, только если она действительно длиннее. Иначе это просто сохранит это. Вставка базы данных не должна создавать проблем:

$pdo->prepare("INSERT INTO textfiles (content) VALUES (?)")
    ->execute(array($content));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...