qiniu-laravel-storage icon indicating copy to clipboard operation
qiniu-laravel-storage copied to clipboard

上传之后的下载地址有误

Open LaravelChen opened this issue 6 years ago • 16 comments

avatar_11504007614.jpg/fNIcjKJz2sel955xaeTxNSUo6zQU0PTcW3kFUQN6.jpeg

会自动在jpg后面添加上token.jpeg,这是什么鬼啊!

LaravelChen avatar Aug 29 '17 11:08 LaravelChen

这什么鬼?

zgldh avatar Aug 29 '17 13:08 zgldh

搜索了遍代码,没有看到字符串 jpeg 你搜搜你的代码 jpeg看能找到什么不

zgldh avatar Aug 29 '17 13:08 zgldh

我也出现了这种问题,在put的时候传入了一个key之后就变成这样了 但是这个key不是应该在七牛的名称么

gzxy-0102 avatar Oct 11 '17 03:10 gzxy-0102

猜不出来啊。提供些代码分析下吧

zgldh avatar Oct 11 '17 15:10 zgldh

@zgldh 应该是laravel的put方法导致 put的第一个参数是文件的存放路径,文件名laravel已经命名好了 所以导致我传一个第一个参数之后的字符串是这样的xx.jpeg/xx.jpeg

gzxy-0102 avatar Oct 12 '17 06:10 gzxy-0102

使用 $disk->put($file['name'],$file['file']); 上传成功之后在七牛后台显示 111.jpg/sxJmwXzCP4u1iYzsjEr6yAC1PxMlXVG8iOQ5E4J8.jpeg 请问应该怎么解觉此问题. 我只想生成指定的文件名

lianke avatar Dec 04 '17 09:12 lianke

请截取足够上下文代码以便分析。

我新建了一个干净的 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 是 image

并没有能重现你们遇到的问题

zgldh avatar Dec 05 '17 11:12 zgldh

最新的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

ljboom avatar Jan 11 '18 07:01 ljboom

0.9的时候$url = $disk->privateDownloadUrl($filename, 'https')->getUrl();

ljboom avatar Jan 11 '18 07:01 ljboom

我后来改为用官方自带的类库的方法是没问题的 没用到这个 zgldh/qiniu-laravel-storage

lianke avatar Jan 11 '18 07:01 lianke

@qq302687651 privateDownloadUrl 返回的是一个 QiniuUrl 对象, 被序列化或被字符串化后,会自动变成单纯的 URL。

zgldh avatar Jan 12 '18 05:01 zgldh

@lianke 能最终解决真是太好了。 但针对你遇到的问题,如果没有足够代码和上下文分析的话,我也爱莫能助。

zgldh avatar Jan 12 '18 05:01 zgldh

@zgldh 不会自动变成单纯的URL。 $url = $disk->privateDownloadUrl($filename, 'https');如果直接return redirect($url);会出错

ljboom avatar Jan 12 '18 05:01 ljboom

@zgldh 今天偶然看了看,发现之前出现这个问题是因为使用了$this->requrest('file')这种写法,这种写法laravel会将上传的文件名自动加上唯一id,所以会出现之前的问题!所以说,问题在这儿哈哈哈!

LaravelChen avatar Feb 26 '18 07:02 LaravelChen

握草,幸亏评论看到了最后

xiang-xx avatar Mar 08 '18 09:03 xiang-xx

可以在上传文件时通过file_get_contents函数来解决这个问题 $res = $disk->put($upload_path, file_get_contents($file));

imyhui avatar Sep 08 '18 13:09 imyhui