如果我要使用Ajax将图像或音频文件上传到我的服务器,默认情况下存储的文件数据在哪里,而不使用 move
方法?它在 Storage/framework/cache/data
文件夹中吗?
UPDATE
为了进一步说明,我想知道,如果我通过ajax(比如一个音频文件)上传一个文件,并且在请求所在的控制器函数里面,那么这个上传的文件去了哪里?
功能的例子:
public function processUploadedFile(Request $Request) {
// blank block, no code to affect file
}
3 回答
那真的取决于它 . 但很可能它会存储在
storage
文件夹中 . 如果您的用户需要访问上传的文件,则必须将文件存储在storage/app/public
中 . 要能够访问该文件夹,请执行php artisan storage:link
,这将创建一个可从public
文件夹访问的符号链接 .假设我想上传文件文件变量名
avatar
.$path = $request->file('avatar')->store('public/avatars');
要在客户端访问检索文件,只需调用
asset('storage/avatars');
参考:https://laravel.com/docs/5.7/filesystem
您需要发布您使用过的移动代码 . 所以,我们可以进一步了解这个问题 .
公用磁盘用于可公开访问的文件 . 默认情况下,公共磁盘使用本地驱动程序并将这些文件存储在storage / app / public中 . 要使它们可以从Web访问,您应该创建一个从公共/存储到 storage/app/public 的符号链接 . 此约定将使您可公开访问的文件保存在一个目录中,当使用Envoyer等零停机时间部署系统时,可以在部署中轻松共享这些文件 .
要创建符号链接,您可以使用storage:link Artisan命令:
php artisan storage:链接
当然,一旦存储了文件并创建了符号链接,您就可以使用资产助手创建文件的URL:
echo asset('storage / file.txt');
利用帮助程序上传文件
点击这里https://laravel.com/docs/5.4/filesystem#file-uploads
Please mark / upvote如果这有用:)