php 在输入框输入内容,提交后自动在这段内容前后添加特定内容并把这些内容生成多个文件名不同的文件供下

想实现的流程:1:网页中的输入框输入内容(一段网址)2:程序自动将这段内容的前后自己制定的内容3:把经过第二步处理后的内容生成特定扩展名的文件4:复制5份(自己定义,不需... 想实现的流程:

1:网页中的输入框输入内容(一段网址)
2:程序自动将这段内容的前后自己制定的内容
3:把经过第二步处理后的内容生成特定扩展名的文件
4:复制5份(自己定义,不需要用户选择份数)
5:把5份文件根据特定txt文件(放文件名,每行一个名称)中的内容,随机命名。
6:输出这5份制作好的文件供用户下载
展开
 我来答
Alljhatv
2013-09-02 · TA获得超过681个赞
知道小有建树答主
回答量:408
采纳率:87%
帮助的人:191万
展开全部

这个符合要求吗?

假如用户输入的数据以POST方式提交,保存在$_POST['input']

<?php
$text_before = '要在前面添加的内容';
$text_after  = '要在后面添加的内容';
$copy        = 5; // 复制的份数
$extension   = '文件扩展名';
$filename_li = '存放文件名的txt文件';
$file_dir    = '生成的文件的存放目录';

if ((!isset($_POST['input'])) || (empty($_POST['input']))) {
    die('您未输入!');
}

$text = $text_before . $_POST['input'] . $text_after;

unset($text_before, $text_after);

// 获取所有可选择的文件名
$filename_li = explode("\n", file_get_contents($filename_li));

$array_max = count($filename_li) - 1;

// 复制文件
$files = array(); // 存放文件地址
for($i = 0; $i < $copy; ++$i) {
    $f = fopen($files[$i] = $file_dir . $filename_li[rand(0, $array_max)] . '.' . $extension, 'w');
    fwrite($text, $f);
    fclose($f);
}

unset($copy, $extension, $filename_li, $file_dir, $text, $array_max, $i, $f);

// $files 数组中存放的就是生成的文件的地址

谢谢!

如果还有什么要求,或者有不满意的地方,请随便指出!

追问
需要怎么改?
追答

因为文件下载可能在其他地方进行,或者不是在同一个会话中进行,所以要一个单独的处理方法。

您需要将生成的文件名称保存在数据库中。

首先在文件最开始加上:

ob_start();

然后再加上以下内容

$file     = ''; // 这个是文件路径
$filename = explode('/', $file);
$filename = $filename[count($filename) - 1];

// 提示浏览器进行下载
header('Content-type: application/octet-stream'); 
header('Accept-Ranges: bytes'); 
header('Accept-Length:' . filesize($file)); 
header('Content-Disposition: attachment; filename=' . $filename);

// 输出文件内容
echo file_get_contents($file);

就可以了,浏览器会提示下载的。

xiii130
2013-09-02 · 知道合伙人软件行家
xiii130
知道合伙人软件行家
采纳数:817 获赞数:2867
爱好编程,在工作中积累了比较丰富的经验。愿与大家共同进步。

向TA提问 私信TA
展开全部
<form method="post" action="?do=true">
  <textarea name="url" cols="45" rows="5"></textarea>
  <input type="submit" name="button" value="提交">
</form>

<?php
if($_GET['do']){
    if($_POST['url']){
        //加入自定义内容
        $str = "自己定制的内容,自己改".$_POST['url'];
        //扩展名
        $ext = ".doc";
        //读取存放文件名的文件
        $names = file_get_contents('a.txt');
        //这里能不能用分号隔开每个名字,好写一点。。。
        $names = explode(';', $names);
        //生成5分文件
        $returns = array();
        for($i=0;$i<5;$i++){
            //随机从文件名中抽一个
            $idx = array_rand($names);
            $fielName = $names[$idx] + $ext;
            //将他弹出
            array_pop($names[$idx]);
            file_put_contents($fielName, $str);
            array_push($returns, $fielName);
        }
        //输出
        foreach($returns as $k => $v){
            $fp = fopen($v, 'r'); 
            $file_size = filesize($v);
            //下载文件需要用到的头 
            header('Content-type: application/octet-stream'); 
            header('Accept-Ranges: bytes'); 
            header('Accept-Length:'.$file_size); 
            header('Content-Disposition: attachment; filename='.$v); 
            $buffer = 1024;
            $file_count = 0; 
            //向浏览器返回数据 
            while(!feof($fp) && $file_count<$file_size){
                $file_con = fread($fp, $buffer);
                $file_count += $buffer;
                echo $file_con;
            }
            fclose($fp);
        }
    }
}
?>

enjoy it !

追问
我想要直接把文件复制5份,根据文本文件的内容随机命名这5份文件名称,需要怎么改进?
追答

我写的是直接创建5个文件不行么?而且5个文件的名字就是从那个名字的文本文件里边读的。


如果非要复制的话,在file_put_contents之后,使用php的copy函数就行了


$names = file_get_contents('a.txt');
$names = explode(';', $names);
//生成5分文件
//随机从文件名中抽一个
$idx = array_rand($names);
$fielName = $names[$idx] + $ext;
file_put_contents($fielName, $str);
array_pop($names[$idx]);
$source = $fielName;
for($i=0;$i<5;$i++){
    $idx = array_rand($names);
    $fielName = $names[$idx] + $ext;
    array_pop($names[$idx]);
    //根据文本文件的名字复制5份
    copy($source, $fielName);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友32685e1d
2013-09-02
知道答主
回答量:7
采纳率:0%
帮助的人:9710
展开全部
$a = "前缀";
$b = "后最";
$filename = rand(100000,999999);
$filesuffix = ".asd";
$filepath = "D:/wamp/asd/";
for($i=0;$i<5;$i++) {
$content = $a.$_POST['content'].$b;
file_put_contents($filepath.$filename.$i.$filesuffix, $content);
}

下载是列表页的问题了 我就不写了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式