我遇到了一些可能对任何使用 uploadcare.com(或类似网站)保存用户个人资料图片的人有用的东西。如果问题已得到解答但我还没有找到,请提前抱歉。
问题:我目前正在与 Uploadcare.com 合作编写脚本。这是我使用的文档:https://uploadcare.com/quick_start/php/
这个想法是将上传图片的 URL 与其他用户数据一起保存在数据库中。
我从
获取URL$file->getUrl();
在本地脚本上,我还可以将用户的其他所有内容保存在数据库中。
仅 URL 和 Uploadcare 脚本无法一起工作 - 我无法保存已上传图像的 URL。
脚本:
注册.php:
<form class="form-signin-register wow fadeInUp" name="signupform" id="signupform" onsubmit="return false;" method="POST" action="photoupload.php">
<h2 class="form-signin-heading">Register now</h2>
<div class="login-wrap">
<p>Enter personal details</p>
<input id="avatar" name="avatar" type="text" class="hidden" value="<?php echo $url; ?>">
<!-- M: The 'Choose a File' button. This also loads the widget -->
<?php include('formphoto.php'); ?>
<input id="firstName" type="text" class="form-control" placeholder="First Name" autofocus>
<input id="lastName" type="text" class="form-control" placeholder="Last Name">
<input id="email" onfocus="emptyElement('status')" onblur="checkemail()" onkeyup="restrict('email')" maxlength="88" type="text" class="form-control" placeholder="Email"><span id="emailstatus"></span>
<select id="gender" onfocus="emptyElement('status')" class="form-control">
<option value="">Select Gender</option>
<option value="m">Male</option>
<option value="f">Female</option>
</select> ..... <button id="signupbtn" onclick="signup();" class="btn btn-lg btn-login btn-block" disabled>Create Account</button></form>
formphoto.php:
<?php require_once 'vendor/autoload.php';
use \Uploadcare;
$api = new Uploadcare\Api('ab11954d8908bc4b0e35', 'secretkey_removed');
?>
<?php echo $api->widget->getScriptTag(); ?>
<script>
//set this to true when live!
UPLOADCARE_LIVE = false;
UPLOADCARE_IMAGES_ONLY = true;
//here is free croping defined
UPLOADCARE_CROP = '1:1';
</script>
<form method="POST" action="photoupload.php">
<?php echo $api->widget->getInputTag('qs-file'); ?>
<!-- don't need the following line, it saves also without to uploadcare :) -->
<!-- <input type="submit" value="Save this profile picture!" /> -->
</form>
照片上传.php:
<?php
require_once 'vendor/autoload.php';
use \Uploadcare;
$file_id = $_POST['qs-file'];
$api = new Uploadcare\Api('ab11954d8908bc4b0e35', 'secretkey_removed');
$file = $api->getFile($file_id);
$file->store();
$url = $file->getUrl();
header registration.php;
?>
<!-- M: for saving the avatar picture, a hidden field. The value is the URL of pic in Uploadcare.com -->
<!-- $url = $file->getUrl(); -->
<小时/>
我是否也搞乱了脚本的执行顺序?
最佳答案
迈克尔,首先 - 我已经编辑了您的问题以删除 key - 您作为第二个参数传递给 Uploadcare\Api() 的 key - 它不应该被任何人公开看到。
不知道为什么你在registration.php中嵌入formphoto.php,但我直接将输入标签放在注册表中并做了一些小的修正,这应该可以工作:
注册.php
<html>
<head>
<script>
//set this to true when live!
UPLOADCARE_LIVE = false;
UPLOADCARE_IMAGES_ONLY = true;
//here is free croping defined
UPLOADCARE_CROP = '1:1';
</script>
<?php
require_once 'vendor/autoload.php';
use \Uploadcare;
$api = new Uploadcare\Api('ab11954d8908bc4b0e35', 'YOUR_SECRET_KEY');
echo $api->widget->getScriptTag();
?>
<head>
<body>
<form class="form-signin-register wow fadeInUp" name="signupform" id="signupform" method="POST" action="photoupload.php">
<h2 class="form-signin-heading">Register now</h2>
<div class="login-wrap">
<p>Enter personal details</p>
<!-- M: The 'Choose a File' button. This also loads the widget -->
<?php
echo $api->widget->getInputTag('qs-file');
?>
<input name="firstName" id="firstName" type="text" class="form-control" placeholder="First Name" autofocus>
<input name="lastName" id="lastName" type="text" class="form-control" placeholder="Last Name">
<input name="email" id="email" onfocus="emptyElement('status')" onblur="checkemail()" onkeyup="restrict('email')" maxlength="88" type="text" class="form-control" placeholder="Email"><span id="emailstatus"></span>
<select name="gender" id="gender" onfocus="emptyElement('status')" class="form-control">
<option value="">Select Gender</option>
<option value="m">Male</option>
<option value="f">Female</option>
</select> .....
<button id="signupbtn" class="btn btn-lg btn-login btn-block">Create Account </button>
</form>
<body>
</html>
照片上传.php
<html>
<head>
<?php
require_once 'vendor/autoload.php';
useUploadcare;
$file_id = $_POST['qs-file'];
$firstName = $_POST['firstName'];
$lastName = $_POST['lastName'];
$email = $_POST['email'];
$gender = $_POST['gender'];
$api = new UploadcareApi('ab11954d8908bc4b0e35', 'YOUR_SECRET_KEY');
$file = $api->getFile($file_id);
$file->store();
?>
</head>
<body>
<?php
echo $firstName, ' ', $lastName, ' ', $email, ' ', $gender, ' ', $file->getUrl(); ?>
<br />
</body>
您需要将这两个文件放在网络服务器的 DOCUMENT_ROOT 下,并确保它对这两个文件具有正确的访问权限:
sudo chown www-data registration.php photoupload.php
sudo chmod 700 registration.php photoupload.php
关于php - Uploadcare 在数据库 PHP 中保存 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39611750/