七牛php-SDK

七牛php-sdk

安装

composer require qiniu/php-sdk

安装完成后,在获取token的过程中出现报错

file_put_contents(/var/folders/sw/sf1dd9lj205cl3h8wz0121h00000gn/T/.qiniu_phpsdk_hostscache.json): failed to open stream: Permission denied

一步步查看源码追踪,在文件 vendor/qiniu/php-sdk/src/Qiniu/Zone.php 的157行处,

155.| private function hostCacheFilePath()
156.| {
157.|     return sys_get_temp_dir() . '/.qiniu_phpsdk_hostscache.json';
158.| }

由于 sys_get_atemp_dir()/var/folders/sw/sf1dd9lj205cl3h8wz0121h00000gn/T ,这个文件夹的权限很低没法写入。

网上有解决办法是将157行改为,

return __DIR__ . '/.qiniu_phpsdk_hostscache.json';

当前目录权限还是够的,所以至此问题解决。

但是文件生成路径更改之后会有什么结果尚不得知,看文件命名规则猜想应该是缓存 token 的文件。

参考:七牛云存储PHP SDK报错Warning: file_put_contents

Laravel 和 Vue.js 使用 Axios 通过 Put 请求上传文件

碰到上传文件,后端获取不到数据的问题,和《Laravel 和 Vue.js 使用 Axios 通过 Put 请求上传文件》文中的问题一致,借鉴这篇文章解决问题的方法。

这里记录一下最终成功的部分:

Javascript 部分

var form = new FormData();
let file = e.dataTransfer.files[0];
form.append("_method", 'put'); // 根据laravel文档
form.append("file", file, file.name); // 文件对象
axios.post('/upload', form).then((res) => {//根据服务器返回进行处理
  console.log('success', res)
}).catch((error) => {
  console.error('error', error)
});

web.php 路由部分

Route::put('/upload', 'HomeController@uploadFile');

HomeController.php 路由部分

public function dropUpload(Request $request){
  Log::alert($request->method().'进入Input');
  Log::alert($request);
  if($request->hasFile('file')){
      Log::alert('包含');
  }else{
      Log::alert('不含');
  }
}

laravel.log 部分

[2017-05-09 18:46:26] local.ALERT: PUT进入Input
[2017-05-09 18:46:26] local.ALERT: array (
  '_method' => 'put',
  'file' => 
  Illuminate\Http\UploadedFile::__set_state(array(
     'test' => false,
     'originalName' => 'cat-care_cat-nutrition-tips_overweight_body4_left.jpg',
     'mimeType' => 'image/jpeg',
     'size' => 145406,
     'error' => 0,
     'hashName' => NULL,
  )),
)  
[2017-05-09 18:46:26] local.ALERT: 包含

你可能感兴趣的:(七牛php-SDK)