2015-11-05 20 views
1

我使用jquery-gdrive插件从谷歌驱动器中选择图像,文件,文档,它返回的URL。从URL我将图像存储到我的本地磁盘,如果我尝试打开它显示无效图像的图像,同样的事情为Dropbox选择器也如何解决这个问题?图片从URL - 存储为无效格式php

这里是我的谷歌云端硬盘网址 - 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); 
}); 

+0

感谢您的回复Magnus,我的事情我登录,在保管箱让我再次检查,所以我必须做的gdrive网址,是他们的任何其他方式来解决这个问题? – user5506189

+0

如果您在浏览器中登录,则不会影响Web服务器的访问。 Web服务器对于浏览器可以访问的内容是无能为力的。您需要着眼于使用Dropbox和Google驱动器API并使用Oauth进行身份验证。 –

+0

好的,谢谢,让我试试 – user5506189

回答

0

如果您在“inprivate”会话或未登录到保管箱的新浏览器中打开保管箱URL,则会看到系统提示您在访问该映像之前先登录到保管箱。

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

Google云端硬盘网址自从以gdrive://开头以来就不是有效的网址。您的Web服务器不知道如何使用该服务器。

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. 要求选择器的“直接链接”而不是“预览链接”(默认)。有关如何使用不同选项设置选配器的详细信息,请参见https://www.dropbox.com/developers/chooser#js。如果您要求提供“直接链接”,则会直接链接到文件内容。

#2可能是更好的选择,因为它没有共享文件的副作用。 (使用“预览链接”,用户在访问www.dropbox.com/links时会看到新的共享链接。)

+0

那么我能做些什么的谷歌选择器 – user5506189

+0

我不知道。 'gdrive://'URL似乎来自名为['jquery-gdrive'](https://github.com/tanmaykm/jquery-gdrive)的jQuery插件。你可能想问这个图书馆的作者? – smarx