七牛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: 包含
网友评论