【thinkphp上传虚拟主机的方法】
在虚拟主机上使用ThinkPHP进行文件上传,首先需要确保你的服务器已经安装了PHP和MySQL,并且已经配置好了相关的环境,接下来,我将详细介绍如何在ThinkPHP中实现文件上传功能。
1. 创建数据库表
我们需要在数据库中创建一个用于存储上传文件信息的表,可以使用以下SQL语句创建:
CREATE TABLE `upload` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, `path` varchar(255) NOT NULL, `create_time` datetime NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2. 配置数据库连接信息
在ThinkPHP的配置文件(如config/database.php)中,配置好数据库的用户名、密码、地址、端口等信息。
return [ // 数据库类型 'type' => 'mysql', // 服务器地址 'hostname' => '127.0.0.1', // 这里填写你的服务器IP地址 // 数据库名 'database' => 'test', // 这里填写你的数据库名 // 用户名 'username' => 'root', // 这里填写你的数据库用户名 // 密码 'password' => '123456', // 这里填写你的数据库密码 // 端口 'hostport' => '3306', // 这里填写你的数据库端口号,默认为3306 ];
3. 创建上传控制器
在你的应用目录下(如application/index/controller),创建一个名为UploadController.php的文件,内容如下:
<?php namespace app\index\controller; use think\Controller; use think\Request; use thinkDb; use think\Config; use think\File; use think\facade\Env; use think\facade\Filesystem; class UploadController extends Controller { public function index() { return $this->fetch(); } }
4. 编写文件上传接口
在UploadController.php中,添加一个名为upload的方法,用于处理文件上传请求,代码如下:
```php
public function upload(Request $request) {
if ($request->hasFile('file')) { // 判断是否有上传文件
$file = $request->file('file'); // 获取上传文件对象
$saveName = './uploads/' . date('Ymd') . '/' . time() * rand(1000,9999) . '.' . $file->getExtension(); // 生成文件保存路径和文件名
$savePath = './uploads/'; // 设置文件保存路径,可根据实际情况修改路径
// 保存文件到服务器指定目录,并返回保存后的文件路径和文件名信息给前端显示和处理用。$saveName为文件新的名字,$savePath与$saveName拼接为新的文件路径。$file->move($savePath,$saveName);返回的是文件的完整路径和名称。$saveName带有时间戳可以防止重复上传。$savePath是文件保存的绝对路径。$file->getExtension()获取的是后缀名,如果获取不到就用系统默认后缀名代替。$file->getSize()获取的是文件大小单位是KB。$file->getMimeType()获取的是文件MIME类型。*/
/*if (!$file->isValid()) {//验证上传文件是否有效,无效则返回错误信息*/
/*$this->error($file->getError());*/
/*}*/ else { // 如果上传的文件存在则直接复制到根目录下的upload文件夹下,并返回保存后的路径信息给前端显示和处理用。*/
$savePath = './uploads/'; // 设置文件保存路径,可根据实际情况修改路径
$file->move($savePath, $saveName); // 保存文件到服务器指定目录,并返回保存后的文件路径和文件名信息给前端显示和处理用。$saveName为文件新的名字,$savePath与$saveName拼接为新的文件路径。$file->move($savePath, $saveName);返回的是文件的完整路径和名称。$saveName带有时间戳可以防止重复上传。$savePath是文件保存的绝对路径。$file->getExtension()获取的是后缀名,如果获取不到就用系统默认后缀名代替。$file->getSize()获取的是文件大小单位是KB。$file->getMimeType()获取的是文件MIME类型。*/
} else { // 如果上传的文件不存在则返回错误信息。$message = '没有上传的文件!'; $result['code'] = -1; $result['msg'] = $message; return json($result); } /*else{//如果上传的文件不存在则返回错误信息。$message = '没有上传的文件!'; $result['code'] = -1; $result['msg'] = $message; return json($result); }*/ ?>
alert("上传成功");
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/87493.html