2009-11-16 57 views
0

$f="../mts/sites/default/files/test.doc"; //以这种方式我能够找到行数,但我没有得到如何我可以给文件夹路径行计数..如果我给路径为$safe_filename$target_path.$safe_filename它来的文件内容不是开幕。请检查代码,并帮助我在此先感谢行数路径问题

<?php 
$nid = 1; 
$teaser = false; 

// Load node 
$node = node_load(array('nid' => $nid)); 
// Prepare its output 
if (node_hook($node, 'view')) { 
    node_invoke($node, 'view', $teaser, false); 
} 
else { 
    $node = node_prepare($node, $teaser); 
} 
// Allow modules to change content before viewing. 
node_invoke_nodeapi($node, 'view', $teaser, false); 

// Print 
print $teaser ? $node->teaser : $node->body; 

$target_path = "../mts/sites/default/files/ourfiles/"; 


//$myfile = basename($_FILES['uploadedfile']['name']); 

$safe_filename = preg_replace( 
        array("/\s+/", "/[^-\.\w]+/"), 
        array("_", ""), 
        trim($_FILES['uploadedfile']['name'])); 

$target_path = $target_path.$safe_filename; 

if(file_exists($target_path)) 
     { 
     echo "<script language=\"javascript\">"; 
     echo "window.alert ('File already exist');"; 
     echo "//--></script>"; 
     } 
elseif(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) { 

echo "<script language=\"javascript\">"; 
echo "window.alert ('File uploaded succesfully');"; 
echo "//--></script>"; 


/* 
echo "The file ". basename($_FILES['uploadedfile']['name']). 
    " has been uploaded"; 
*/ 

} 



$con = mysql_connect("localhost","mts","mts"); 
if (!$con) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 

// Create table 
mysql_select_db("mts", $con); 



$f="../mts/sites/default/files/test.doc";//in this way i am able to find line count,but i am not getting how i can give folder path for line counting 


    // count words 
    $numWords = str_word_count($str)/11; 
    echo "This file have ". $numWords . " words"; 
echo "This file have ". $numWords . " lines"; 





mysql_query("INSERT INTO mt_upload (FileName,linecount, FilePath,DateTime) 
VALUES ('".$safe_filename."','".$numWords."', '".$target_path.$safe_filename."',NOW())"); 


// Execute query 
mysql_query($sql,$con); 

mysql_close($con); 
?> 

强调文本

+0

您的示例代码缺少一些内容,可能会缺少一些其他内容。代码示例应该是最小的测试用例,这意味着它们是完整的,说明了问题,但不包含比必要更多的代码。所有与节点有关的东西看起来与你的问题无关。 – outis 2009-11-16 09:50:47

+0

如何在不打开文件的情况下“发送”内容?另外,如何在不计算线的情况下“找到”线数呢? – 2009-11-16 10:48:02

回答

0

这不是做事情的一个非常安全的方式。 如果两个用户提交的文件具有相同的文件名,它们会覆盖对方。这将用户限制为一个唯一的文件名,在运行系统一段时间后该用户名会成为问题。更何况,如果他有这样的消息,用户会很困惑。

更好的解决方案是为每个文件生成自己的文件名。您可以创建一个很长的随机字符串,或者可以将mysql_insert_id()用于mt_upload表中的插入记录。那么你也不需要乱搞正则表达式,整个事情就会简单得多。在mt_upload表中,如果要将其显示给用户或其他用户,可以保留旧文件名。

0

如果这是确切的代码,那么问题是您拨打str_word_count()$str,但似乎没有设置$str任何地方。

0

函数计算中的所有文件系居住在某个目录

function linecount_dir($dir) { 
    $ig = array('.','..'); 
    $d = dir($dir); 
    while (false !== ($entry = $d->read())) { 
     if (!in_array($entry,$ig)) { 
     $total += linecount($d->path . "/$entry"); 
     } 
    } 
    $d->close(); 
    return $total; 
} 

函数计算行

define(BLOCK_SIZE,131072); 

function linecount($filename) { 
    $f = fopen($filename,'r'); 
    while (!feof($f)) { 
    $d = fread($f,BLOCK_SIZE); 
    $rcount += substr_count($d, "\n"); 
    $ncount += substr_count($d, "\r"); 
    } 
    fclose($f); 
    return (($rcount >= $ncount) ? $rcount : $ncount); 
} 

应用到你的代码

$f="../mts/sites/default/files/test.doc";//in this way i am able to find line count,but i am not getting how i can give folder path for line counting 

// count words 
$numWords = str_word_count($str)/11; 
// count lines 
$numLines = linecount($f); 

echo "This file have ". $numWords . " words"; 
echo "This file have ". $numLines . " lines"; 
+0

我想要路径如何我可以给整个文件夹 – 2009-11-16 11:45:50

+0

恐怕我不明白。你想为给定目录中的每个文件计算行数吗? – 2009-11-16 12:46:03

+0

我加了一个目录计数功能。 – 2009-11-16 19:22:54

0

$ F =” ../mts/sites/default/files/".$safe_filename;