ホームページ  >  記事  >  バックエンド開発  >  PHP はネイティブ関数を使用してファイルのアップロードとダウンロードを実装します

PHP はネイティブ関数を使用してファイルのアップロードとダウンロードを実装します

伊谢尔伦
伊谢尔伦オリジナル
2016-11-26 16:05:001448ブラウズ

ファイルのアップロード:

if ( $_FILES && $_FILES['attachment'] && $_FILES['attachment']['tmp_name']){
    $filesize = $_FILES['attachment']['size'];
    //文件上传大小限制:5M
    if($filesize > 5*1024*1024){
        exit('上传文件大小超出限制!');
    }
    //文件保存目录,如果不存在则创建之
    $uploaddir = ROOT_DIR.'/public/attachment/notice/';
    if(!file_exists($uploaddir))
        mkdir($uploaddir,0755,true);
    //获取上传文件扩展名
    $arr_file = explode('.', basename($_FILES['attachment']['name']));
    $filetype = $arr_file[count($arr_file)-1];
    //获取源文件名
    $attachment_name = basename($_FILES['attachment']['name']);
    //对文件进行重命名以避免中文字符的影响
    $fname = md5(basename($_FILES['attachment']['name']).microtime()).'.'.$filetype;
    $uploadfile = $uploaddir . $fname;
    if (move_uploaded_file($_FILES['attachment']['tmp_name'], $uploadfile)) {
        //获取文件相对路径
        $attachment = '/public/attachment/notice/'. $fname;
    } else {
        exit('文件上传失败!');
    }
}

注: 「attachment」はアップロードされたファイルの名前で、プロジェクト内の特定の属性値に従って変更されます。このアップロード プロセスにはファイルの種類に制限がなく、特定のニーズに応じて自分で処理できます。

ファイルのダウンロード:

//输入文件标签 
Header ( "Content-type: application/octet-stream" ); 
Header ( "Accept-Ranges: bytes" ); 
Header ( "Accept-Length: " . filesize ( $attachment_filepath ) ); 
Header ( "Content-Disposition: attachment; filename=" . $attachment_filename ); 
//输出文件内容 
//读取文件内容并直接输出到浏览器 
echo file_get_contents($attachment_filepath); 
exit ();


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。