Laravel中获取图片原路径及修改PHP上传临时目录方法
在Laravel中获取上传图片的原始路径及php.ini配置修改方案
嘿,我来帮你理清楚这个问题!首先得明确一个关键的浏览器安全限制:当用户通过网页表单上传文件时,浏览器只会发送文件本身的内容和文件名,不会传递文件在用户本地的原始文件夹路径(比如你说的C:\Users\dev\Desktop\abc)。这是为了保护用户隐私,防止网站窥探本地文件系统结构,所以你没法通过Laravel直接拿到这个本地路径哦。
下面分两部分解答你的问题:
一、Laravel中关于上传文件路径的正确处理
你用$file->getRealPath()拿到的是服务器端的临时文件路径,这是正常的——上传的文件会先存在服务器的临时目录,之后你可以通过Laravel的文件存储功能把它移动到你想要的永久存储位置:
- 如果你想把文件保存到项目的
public目录,可以用:$filename = $file->getClientOriginalName(); $file->move(public_path('uploads'), $filename); // 之后就可以用 public_path('uploads/' . $filename) 获取文件的永久路径 - 如果你用Laravel的Storage门面(推荐),可以这样操作:
$path = Storage::putFile('public/uploads', $file); // 获取存储路径:storage_path('app/public/uploads/' . basename($path)) // 或者生成访问URL:asset(Storage::url($path))
二、修改php.ini的upload_tmp_dir配置
如果你的需求是修改服务器存储临时上传文件的目录(而不是获取用户本地路径),那可以按以下步骤操作:
- 找到php.ini文件:在WAMP环境中,点击任务栏的WAMP图标 → 选择
PHP→ 点击php.ini即可打开配置文件;也可以通过创建一个php文件,写入<?php phpinfo(); ?>,访问后查看Loaded Configuration File项的路径,找到对应的php.ini。 - 修改临时目录配置:在php.ini中找到
upload_tmp_dir这一行,把它的值改为你想要的文件夹路径,比如:
注意:这个文件夹必须提前创建好,并且WAMP的Apache进程要有读写这个文件夹的权限(一般给文件夹设置Everyone读写权限就能解决权限问题)。upload_tmp_dir = "C:\Users\dev\Desktop\abc" - 重启服务器:修改完配置后,一定要重启WAMP的Apache服务,新的配置才会生效。
- 验证配置:再次访问phpinfo()页面,查看
upload_tmp_dir项是否已经变成你设置的路径,上传一个文件后也可以去目标目录看看是否生成了临时文件。
需要再强调一次:修改临时目录只是改变服务器存储临时文件的位置,依然无法获取用户本地的原始文件路径哦!
内容的提问来源于stack exchange,提问作者user_777
相关产品推荐
相关产品推荐

