Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

上传之后的下载地址有误 #45

Open
LaravelChen opened this issue Aug 29, 2017 · 16 comments
Open

上传之后的下载地址有误 #45

LaravelChen opened this issue Aug 29, 2017 · 16 comments

Comments

@LaravelChen
Copy link

avatar_11504007614.jpg/fNIcjKJz2sel955xaeTxNSUo6zQU0PTcW3kFUQN6.jpeg

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

@zgldh
Copy link
Owner

zgldh commented Aug 29, 2017

这什么鬼?

@zgldh
Copy link
Owner

zgldh commented Aug 29, 2017

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

@gzxy-0102
Copy link

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

@zgldh
Copy link
Owner

zgldh commented Oct 11, 2017

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

@gzxy-0102
Copy link

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

@lianke
Copy link

lianke commented Dec 4, 2017

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

@zgldh
Copy link
Owner

zgldh commented Dec 5, 2017

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

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

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

@ljboom
Copy link

ljboom commented Jan 11, 2018

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

ljboom commented Jan 11, 2018

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

@lianke
Copy link

lianke commented Jan 11, 2018

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

@zgldh
Copy link
Owner

zgldh commented Jan 12, 2018

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

@zgldh
Copy link
Owner

zgldh commented Jan 12, 2018

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

@ljboom
Copy link

ljboom commented Jan 12, 2018

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

@LaravelChen
Copy link
Author

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

@xiang-xx
Copy link

xiang-xx commented Mar 8, 2018

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

@imyhui
Copy link

imyhui commented Sep 8, 2018

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants