来自网址的图片 - 存储为无效格式的php

时间:2015-11-05 06:53:18

标签: php image google-drive-api dropbox-api

我正在使用jquery-gdrive插件从谷歌驱动器中选择图像,文件,文档,它返回网址。从网址我将图像存储到我的本地磁盘如果我尝试打开显示无效图像的图像,对于dropbox选择器同样如何解决这个问题?

这是我的谷歌驱动器网址 - gdrive://DSC_0031.jpg/0Bx-Ck9De1dkOeExfT1o2SEZWNDQ 这是我的Dropbox选择器网址 - https://www.dropbox.com/s/ruqu1bfrs371ntj/spokeless-bike.jpg?dl=0

<html>
<head>

</head>
<body>
    <form name="imageUpload" action="" method="POST" enctype="multipart/form-data">
        <input id="gdrive_file" type="text" name="imageToUpload"> <a href="#" id="gdrive_file_selector">Select file</a><br/>

        <div class="submitBtn">
<input type="submit" name="submit" value="SUBMIT">
</div>
    </form>
    <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
    <script type="text/javascript" src="//apis.google.com/js/client.js"></script>
    <script type="text/javascript" src="../jquery-gdrive.js"></script>
    <script type="text/javascript">
        $(document).ready(function() {
            $().gdrive('init', {
                'devkey': 'xxxxxxxxxxxxxx',
                'appid': 'xxxxxxxxxxxxxxx'
            });

            $('#gdrive_file').gdrive('set', {
                'trigger': 'gdrive_file_selector', 
                'header': 'Select a file', 
                'filter': ''
            });
            $('#gdrive_folder').gdrive('set', {
                'trigger': 'gdrive_folder_selector', 
                'header': 'Select a folder', 
                'filter': 'application/vnd.google-apps.folder'
            });
        });
    </script>
</body>

<?php
$image = $_POST['imageToUpload'];
$s = basename($image);

file_put_contents("uploads/$s", file_get_contents($image));
?>

这是我的Dropbox选择器代码

      <script type="text/javascript" src="https://www.dropbox.com/static/api/1/dropins.js" id="dropboxjs" data-app-key="6s50p5csnfjties"></script>
  <!-- Replace data-app-key with yours -->    

</head>
<body>
<form action="" method="POST">
   <input type="dropbox-chooser" name="selected-file" id="db-chooser"/>
   <input type="submit" name="submit" id="sub" value="Submit" />
</form>
</body>
      <script type="text/javascript">
  $("#db-chooser").on('DbxChooserSuccess',function(event)
{ 
   alert("Here's the chosen file: " + event.originalEvent.files[0].link);
     console.log(event.originalEvent.files[0].link);
});

3 个答案:

答案 0 :(得分:3)

https://www.dropbox.com/s/ruqu1bfrs371ntj/spokeless-bike.jpg?dl=0不是图片的链接。它是指向其上有图像的网页的链接。有两种方法可以获得所需的链接:

  1. 请尝试https://www.dropbox.com/s/ruqu1bfrs371ntj/spokeless-bike.jpg?raw=1。 (请注意?raw=1。)请参阅https://www.dropbox.com/help/201以了解共享链接以及如何将其转换为指向内容的直接链接的链接。
  2. 从Chooser请求“直接链接”而不是“预览链接”(默认)。有关如何使用不同选项设置选配器的详细信息,请参阅https://www.dropbox.com/developers/chooser#js。如果您要求“直接链接”,您将直接获得文件内容的链接。
  3. #2可能是更好的选择,因为它没有共享文件的副作用。 (使用“预览链接”,用户在访问www.dropbox.com/links时会看到创建了新的共享链接。)

答案 1 :(得分:1)

您也可以试用这个用于下载文件的https://www.dropbox.com/s/ruqu1bfrs371ntj/spokeless-bike.jpg?dl=1,只需查看https://www.dropbox.com/help/201

答案 2 :(得分:0)

如果您在&#34; inprivate&#34;中打开保管箱网址会话或在未登录到Dropbox的新浏览器中,您会看到系统会提示您登录Dropbox,然后才能访问该图像。

Web服务器(运行PHP代码)没有登录到Dropbox,很可能只能获取和下载登录页面,而不是图像。

Google云端硬盘网址不是有效的网址,因为它以gdrive://开头。您的Web服务器不知道如何使用该服务器。