laravel中的文件上传到本地+七牛云上传

 

首先在filesystems.php 配置好上传的文件的目录起名为upload

Storage/目录下面

目录下面的app/upload 如果没有这个文件会自动创建

 

 

 这里的名字upload名字是跟控制器中的保存代码对应的名字是一样的

$bool= Storage::disk('upload')->put($filename,file_get_contents($path));

(2)写一个form表单里面input的类型为file

文件上传不能忘了表单提交里面要加这个

 
 
enctype="multipart/form-data"

 

这是模板的部分

 
 
<form action="/user/1/store" method="POST" enctype="multipart/form-data">
{{csrf_field()}}


<input type="file"  name="file"  id="file" />


<input type="submit" value="提交修改">
</form>

 

路由
 
 
Route::post('user/{user}/store','\App\Http\Controllers\UserController@updateStore');
 
 

 


控制器
 
  
use Illuminate\Support\Facades\Storage;


public
function updateStore(Request $request) { $wenjian= $request->file('file'); if ($wenjian->isValid()) { //获取文件的原文件名 包括扩展名 $yuanname= $wenjian->getClientOriginalName(); //获取文件的扩展名 $kuoname=$wenjian->getClientOriginalExtension(); //获取文件的类型 $type=$wenjian->getClientMimeType(); //获取文件的绝对路径,但是获取到的在本地不能打开 $path=$wenjian->getRealPath(); //要保存的文件名 时间+扩展名 $filename=date('Y-m-d-H-i-s') . '_' . uniqid() .'.'.$kuoname; //保存文件 配置文件存放文件的名字 ,文件名,路径 $bool= Storage::disk('upload')->put($filename,file_get_contents($path)); return back(); } }

 

默认的文件上传大小为2M 需要自己到php的文件夹下的php.ini

里面的post_max_size=2M 修改下并且重启阿帕奇

还有upload_max_filesize=2M


然后目录下图片就会出来了

 

 七牛云
composer require itbdw/laravel-storage-qiniu
 
 
config/app.php 里面的 providers 加上一行  itbdw\QiniuStorage\QiniuFilesystemServiceProvider::class,

config/filesystems.php 里面的 disks数组加上

 'qiniu' => [
            'driver'    => 'qiniu',
            'domain'    => '88888888.bkt.clouddn.com',  //你的七牛域名
            'access_key'=> '',    //AccessKey
            'secret_key'=> '',   //SecretKey
            'bucket'    => 'wl11',    //Bucket名字你的储存空间的名字
        ],

 

 
 
 只要把disk('qiniu')改一下就OK了
然后控制器的代码还是一样的

 

 
 
上传OK!



 但是文件上传到本地了之后我想要获取怎么办昵?直接获取stroage目录下,是获取不到的,只能获取到public目录下

这时候就需要在public目录下创建一个软连接到stroage/public这个目录下

用composer的命令

php artisan storage:link

 

 

 

这是时候public目录下就会出现一个超链接,这里面的内容是和storage/public目录下的内容是一样的

 

这样就可以轻松获取到了

 

但是在服务器上面你把这个软连接上传上去,centos不同步strange目录下的文件,

于是我重新执行了一下

php artisan storage:link
却发现一个问题就是提示我这个软链接已经存在,然后我把这个软链接删除了,从新执行,composer却报错了,我猜就是权限的问题,于是我就直接在public目录下创建一个软链接
建立软链接:ln -s /www/wwwroot/122.114.111.77/storage/app/public

 

然后再ll一下public目录

然后你把原来的strage改成public就ok了

 

 
 

 

转载于:https://www.cnblogs.com/wlphp/p/7809975.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在uni-app本地图片到七牛云,可以按照以下步骤进行: 1. 在七牛云上创建一个存储空间,并获取该空间的Access Key和Secret Key。 2. 安装uni-app的官方插件uni-upload,并在项目根目录下的vue.config.js进行配置,添加以下代码: ``` const qiniuUploader = require('uniapp-qiniu-sdk'); const qiniuOptions = { region: 'your region', // 七牛云存储区域 uptokenURL: 'your uptokenURL', // 服务端提供获取上凭证的接口 domain: 'your domain', // 七牛云存储空间绑定的域名 }; module.exports = { configureWebpack: { plugins: [ { apply: (compiler) => { compiler.hooks.afterEmit.tapPromise('afterEmit', (compilation) => { return new Promise((resolve, reject) => { qiniuUploader.upload(compilation.assets['your upload file name'].existsAt, 'your key', qiniuOptions, (res) => { console.log(res); resolve(); }, (error) => { console.log(error); reject(); }); }); }); }, }, ], }, }; ``` 3. 在需要上图片的页面,添加以下代码: ``` <template> <view> <input type="file" @change="upload"> </view> </template> <script> export default { methods: { upload(event) { const file = event.target.files[0]; const reader = new FileReader(); reader.readAsDataURL(file); reader.onload = () => { const base64Img = reader.result; qiniuUploader.upload(base64Img, (res) => { console.log(res); }, (error) => { console.log(error); }); }; }, }, }; </script> ``` 其,首先使用FileReader将本地图片转换为base64格式,然后调用qiniuUploader.upload函数上图片。 以上就是在uni-app本地图片到七牛云的基本步骤,具体使用细节可以根据实际情况进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值