Open LaravelChen opened 7 years ago
这什么鬼?
搜索了遍代码,没有看到字符串 jpeg
你搜搜你的代码 jpeg看能找到什么不
我也出现了这种问题,在put的时候传入了一个key之后就变成这样了 但是这个key不是应该在七牛的名称么
猜不出来啊。提供些代码分析下吧
@zgldh 应该是laravel的put方法导致 put的第一个参数是文件的存放路径,文件名laravel已经命名好了 所以导致我传一个第一个参数之后的字符串是这样的xx.jpeg/xx.jpeg
使用 $disk->put($file['name'],$file['file']); 上传成功之后在七牛后台显示 111.jpg/sxJmwXzCP4u1iYzsjEr6yAC1PxMlXVG8iOQ5E4J8.jpeg 请问应该怎么解觉此问题. 我只想生成指定的文件名
请截取足够上下文代码以便分析。
我新建了一个干净的 Laravel 5.5 项目,最新的 "zgldh/qiniu-laravel-storage": "^0.9.0"。 建立了如下测试命令。
namespace App\Console\Commands;
use Illuminate\Console\Command;
class TestQiniu extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'testqiniu';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Command description';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
//
$disk = \Storage::disk('qiniu');
$disk->put('file.jpg',file_get_contents(resource_path('someimage.jpg')));
}
}
最后从我的七牛控制面板里看到的 URL 是
并没有能重现你们遇到的问题
最新的0.9; $disk = \Qiniu::disk('qiniu_private'); $disk->put($fname, file_get_contents($fpath)); $disk = \Qiniu::disk('qiniu_private'); $url = $disk->privateDownloadUrl($filename, 'https'); dd($url);// 返回的$url是一个私有对象 不能访问 QiniuUrl {#2748 ▼ -url: "https://XXXX.xls?e=23234270&token=_234234234Gm5rsnUhtrBea6iFsoc1:GX76Eb3ch5RJH6zCMP--5Hc7HU8=" -parameters: [] }
然而0.2.1的时候 返回的$url是一个url
0.9的时候$url = $disk->privateDownloadUrl($filename, 'https')->getUrl();
我后来改为用官方自带的类库的方法是没问题的 没用到这个 zgldh/qiniu-laravel-storage
@qq302687651 privateDownloadUrl 返回的是一个 QiniuUrl 对象, 被序列化或被字符串化后,会自动变成单纯的 URL。
@lianke 能最终解决真是太好了。 但针对你遇到的问题,如果没有足够代码和上下文分析的话,我也爱莫能助。
@zgldh 不会自动变成单纯的URL。 $url = $disk->privateDownloadUrl($filename, 'https');如果直接return redirect($url);会出错
@zgldh 今天偶然看了看,发现之前出现这个问题是因为使用了$this->requrest('file')这种写法,这种写法laravel会将上传的文件名自动加上唯一id,所以会出现之前的问题!所以说,问题在这儿哈哈哈!
握草,幸亏评论看到了最后
可以在上传文件时通过file_get_contents函数来解决这个问题
$res = $disk->put($upload_path, file_get_contents($file));
avatar_11504007614.jpg/fNIcjKJz2sel955xaeTxNSUo6zQU0PTcW3kFUQN6.jpeg
会自动在jpg后面添加上token.jpeg,这是什么鬼啊!