如何将所选文件保存在应用目录中?

时间:2019-02-18 14:40:32

标签: php

我正在使用PHP,现在我的功能是,用户可以选择txt文件类型的消息运行循环,该文件将转换为csv并开始在用户计算机上下载后,我要做的是那样,该文件的副本也会将其保存到我的应用程序目录中,我不知道该怎么做。

我的功能

protected function insertData($data) {
    $lang = $this->load->language('transaction/export_csv');


    $files = $this->request->files;

    $file = $this->request->files['file'];
    $file_name = $file['name'];
    $ext = pathinfo($file_name,PATHINFO_EXTENSION);
    $extension = strtolower($ext);

    $errorCode = $file['error'];

    if($extension != 'txt'){
        $json = array(
            'success' => false,
            'error' => $lang['error_file']
        );
    } else {
        $handle = fopen($file['tmp_name'], "r");
        $new_file = "CSV-".date('d-M-y H:i:s').".csv";
        copy($file['tmp_name'], 'upload/CSVFILE.csv'); //UPDATED LINE

        header('Content-type: application/csv');
        header('Content-Disposition: attachment; filename="'.$new_file.'"');

        header('Pragma: no-cache');
        header('Expires: 0');
        $f = fopen('php://output', 'w');
        $f2 = fopen('upload/CSVFILE.csv', 'w'); //UPDATED LINE

        if ($handle !== FALSE) {
            $row_no =0;
            while (($rows = fgetcsv($handle)) !== FALSE) {
                foreach($rows as $phone_no) {
                    fputcsv($f, array($phone_no, html_entity_decode($data['message'])."\r\n\r\n".$row_no));
                    fputcsv($f2, array($phone_no, html_entity_decode($data['message'])."\r\n\r\n".$row_no)); //UPDATED LINE

                    $row_no++;
                }
            }
        }
        fclose($file);
        fclose($f);
        fclose($f2); //UPDATED LINE
    }
  exit();
}

1 个答案:

答案 0 :(得分:0)

使用copy

copy($file['tmp_name'], 'PATH TO THE APP DIRECTORY');

确保php进程对应用目录具有写权限。

选择文件名

假设应用程序目录为〜/ app ,您希望文件名为 myfile.csv ,然后使用

copy($file['tmp_name'], '~/app/myfile.csv');

要另存为csv文件

创建一个新文件:

$f2 = fopen('~/app/myfile.csv', 'w');

然后将输出放入两个文件:

$data = array($phone_no, html_entity_decode($data['message'])."\r\n\r\n".$row_no);
fputcsv($f, $data);
fputcsv($f2, $data);