Php 远程上传AmazonS3
我制作了一个脚本,通过链接上传远程文件到AmazonS3,但不起作用。我不知道怎么了。下面是完成的所有代码,我正在使用最新版本的Amazon SDK: config.phpPhp 远程上传AmazonS3,php,amazon-web-services,amazon-s3,Php,Amazon Web Services,Amazon S3,我制作了一个脚本,通过链接上传远程文件到AmazonS3,但不起作用。我不知道怎么了。下面是完成的所有代码,我正在使用最新版本的Amazon SDK: config.php <?php return [ 's3' => [ 'key' => 'mykey', 'secret' => 'mykey', 'bucket' => 'mybucket', 'region' => 'us-west
<?php
return [
's3' => [
'key' => 'mykey',
'secret' => 'mykey',
'bucket' => 'mybucket',
'region' => 'us-west-2',
'version' => 'latest'
]
]
?>
start.php
<?php
use Aws\S3\S3Client;
require 'aws/aws-autoloader.php';
$config = require('config.php');
//S3
$s3 = S3Client::factory([
'key' => $config['s3']['key'],
'secret' => $config['s3']['secret'],
'region' => $config['s3']['region'],
'version' => $config['s3']['version']
]);
?>
upload.php
<?php
use Aws\S3\Exception\S3Exception;
require 'start.php';
error_reporting(0);
$get_url = $_POST["url"];
$url = trim($get_url);
if($url)
{
$file = fopen($url,"rb");
$directory = "animes";
$valid_exts = array("php","jpeg","gif","png","doc","docx","jpg","html","asp","xml","JPEG","bmp");
$ext = end(explode(".",strtolower(basename($url))));
if(in_array($ext,$valid_exts))
{
$rand = rand(1000,9999);
$filename = "$rand.$ext";
$newfile = fopen($directory . $filename, "wb");
try{
$s3->putObject([
'Bucket' => $config['s3']['bucket'],
'Key' => "{$directory}/{$filename}",
'ACL' => 'public-read'
]);
} catch(S3Exception $e){
die("Error.");
}
if($newfile)
{
while(!feof($file))
{
fwrite($newfile,fread($file,1024 * 8),1024 * 8);
}
echo 'File uploaded successfully';
echo '**$$**'.$filename;
}
else
{
echo 'File does not exists';
}
}
else
{
echo 'Invalid URL';
}
}
else
{
echo 'Please enter the URL';
}
?>
和index.php
<html>
<head>
<title>PHP File Upload From URL</title>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("#1").hide();
});
function uploadfile(){
$("#1").show();
$("#disp").html("");
var url = encodeURIComponent($("#url").val());
$.ajax({
url: "upload.php",
data: "url=" +url,
type: 'post',
success: function(data)
{
var findsucc = data.indexOf("successfully");
out=data.split('**$$**');
if(findsucc!=-1)
{
$("#disp").css({"color": "green"});
$("#disp").html(out[0]);
$("#link").html("<a href='./upload/"+out[1]+"'>Click here</a> to view");
$("#1").hide();
}
else
{
$("#1").hide();
$("#disp").css({"color": "red"});
$("#disp").html(data);
$("#url").val("");
}
}
});
}
</script>
</head>
<body>
<div align='center' style='padding-top: 40px;color: #4e4e4e;'><h1>PHP File Upload From URL</h1></div>
<div align='center' style='padding-top: 30px;'>
Enter Remote URL: <input type="text" name="url" id='url' size="35"> <input type="submit" value="Upload" name="submit" style='cursor: pointer;' onclick='uploadfile()'> <img src='ajax-loader.gif' id='1'> <br /><br /><div align='center'><span id='disp'></span></div><br>
<div id='link'></div><br />
<div style=" padding-left: 20px;font-size: 10px;color: #dadada;" id="dumdiv">
</div>
</body>
</html>
调试php的最佳方法是通过php的命令行版本运行它,这将显示终端中的错误,而不是挖掘Web服务器日志,这些日志可能会或可能不会提供任何详细信息 如何做到这一点?我正在Windows上使用EasyHP啊,我不确定,抱歉。这是针对unix命令行环境的。一个快速的google显示EasyHP有一个叫做XDebug的东西,它可以让你调试你的代码?嗨,道格拉斯,你解决了吗?如果是,你能分享吗?还没有解决,但当你工作的时候我可以分享。