PHP接收上传的文件

提交文件的HTML页面:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>文件上传</title>
<!--
注意:
enctype="multipart/form-data";
拼写不要写成
enctype="multipart/from-data";
重点:
enctype="multipart/form-data"
type="file"
-->
</head>
<body>
    <form action="u.php" method="post" enctype="multipart/form-data">
        用户名:<input type="text" name="username" /><br />
        头像:<input type="file" name="pic" /><br />
        <input type="submit" value="提交" />
    </form>
</body>
</html>

PHP接收文件:

<?php
/*
PHP文件上传的过程:
1:提交后,文件自动发到服务器上,形成一个临时文件
2:在服务器上,只需要把临时文件移动到自己想要的位置,就可以完成上传操作

疑问: 临时文件在哪儿呢?
文件的其他信息如 文件名,文件大小,等,又在哪儿呢?

答: PHP形成临时文件后,还会形成一个$_FILES超级全局数组
数组里保存着文件的临时地址,临时名称,大小,等信息.

所以 想上传文件,得先读$_FILES
*/


/*
文件上传的注意事项
1:必须POST提交
2:要声明 enctype选项
*/
echo "<pre>";
print_r($_FILES);
echo "</pre>";

/*
3:如何移动上传后的临时文件呢?
答:用move_uploaded_file()函数
*/

/*
4:这个临时文件什么时间消失?
答:临时文件在接收的.php文件结束后,就立即消失了.

比如:02.php负责接收,当02.php运行完毕,临时文件就消失.



sleep(5); //睡5秒钟,便于观察临时文件

if(move_uploaded_file($_FILES['pic']['tmp_name'],'./file/' . $_FILES['pic']['name'])) {
    echo '成功';
} else {
    echo '失败';
}

*/

3、thinkphp接收

    public function swfupload() {
        if (IS_POST) {
			
            //上传处理类
            $config=array(
            		'rootPath' => './'.C("UPLOADPATH"),//文件上传保存的根路径
            		'savePath' => '',//文件上传的保存路径(相对于根路径)
            		'maxSize' => 11048576,//文件上传的最大文件大小(以字节为单位),0为不限大小
            		'saveName'   =>    array('uniqid',''),//上传文件的保存规则,支持数组和字符串方式定义,uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID。
            		'exts'       =>    array('jpg', 'gif', 'png', 'jpeg',"txt",'zip'),
            		'autoSub'    =>    false,//自动使用子目录保存上传文件 默认为true
            );
			$upload = new \Think\Upload($config);// 
			$info=$upload->upload();
            //开始上传
            if ($info) {
                //上传成功
                //写入附件数据库信息
                $first=array_shift($info);
                if(!empty($first['url'])){
                	$url=$first['url'];
                }else{
                	$url=C("TMPL_PARSE_STRING.__UPLOAD__").$first['savename'];
                }
                
				echo "1," . $url.",".'1,'.$first['name'];
				exit;
            } else {
                //上传失败,返回错误
                exit("0," . $upload->getError());
            }
        } else {
            $this->display(':swfupload');
        }
    }

}


转载于:https://my.oschina.net/lantianbaiyun/blog/472902

### PHP 设置上传文件存储路径 对于PHP应用程序而言,设置上传文件的存储位置是一个重要的安全措施。在Laravel框架中,默认情况下,上传文件会被保存到项目的`storage/app`目录下[^1]。 为了更改这一默认行为并将上传文件存放在更合适的位置,可以按照如下方式进行配置: #### 修改 `config/filesystems.php` 通过编辑位于`config/`目录下的`filesystems.php`文件来调整磁盘驱动器选项。这里可以通过自定义磁盘配置项指定新的目标路径。例如,在该文件内添加一个新的本地磁盘配置: ```php 'custom_disk' => [ 'driver' => 'local', 'root' => storage_path('uploads'), // 可以替换为你想要使用的绝对路径 ], ``` 上述代码片段创建了一个名为`custom_disk`的新磁盘,并将其根目录指向了相对于应用根目录之外的一个新文件夹`uploads`。 #### 更新控制器逻辑 当处理文件上传请求时,应当更新相应的控制器方法以便利用刚刚定义好的自定义磁盘。这通常涉及到调用`Storage::disk()`静态方法并传入之前设定的名字作为参数。比如: ```php if ($request->hasFile('file')) { $path = Storage::disk('custom_disk')->putFile('folder_name', $request->file); } ``` 这段代码检查是否有文件被提交上来,如果有,则使用刚才定义过的`custom_disk`磁盘将文件放置于特定子文件夹(`folder_name`)之中。 需要注意的是,如果希望完全脱离项目结构存放这些资源,应该确保所提供的路径是服务器上存在的有效位置,并且Web进程对该位置具有写权限。 另外,考虑到安全性因素,建议不要把上传的内容直接暴露给公众访问,除非确实有必要这样做。在这种情况下,可能还需要额外考虑如何保护敏感数据以及防止潜在的安全风险。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值