I was testing the following piece of code, to see If I can upload images to the bucket at google's cloud storage.
This is my app.yaml file:
application: test-795
version: 1
runtime: php
api_version: 1
handlers:
# Serve images as static resources.
- url: /(.+\.(gif|png|jpg))$
static_files: \1
upload: .+\.(gif|png|jpg)$
application_readable: true
- url: /(.+\.php).*
script: \1
- url: /upload
script: fileimage.php
and this is my fileimage.php file for uploading image file to bucket:
<?php
require_once 'google/appengine/api/cloud_storage/CloudStorageTools.php';
use google\appengine\api\cloud_storage\CloudStorageTools;
$options = [ 'gs_bucket_name' => 'test-795.appspot.com' ];
$upload_url = CloudStorageTools::createUploadUrl('/upload', $options);
if(isset($_POST['do-upload']) AND $_POST['do-upload'] === "yes"){
$yesupload = $_POST['do-upload'];
preg_match("/yes/", "".$yesupload."");
$filename = $_FILES['testupload']['name'];
$gs_name = $_FILES['testupload']['tmp_name'];
move_uploaded_file($gs_name, 'gs://test-795.appspot.com/'.$filename.'');
?>
<div class="contentArea">
<?php
echo "<p class=\"SomeSpaceDude\">Hey file is uploaded, Yes! ".$yesupload." !</p>";
echo "<p class=\"SomeSpaceDude\">This is the file name: ".$filename."</p>";
}
echo"</div>";
?>
<form class="SomeSpaceDude" action="<?php echo $upload_url?>" enctype="multipart/form-data" method="post">
<p>Files to upload: </p> <br>
<input type="hidden" name="do-upload" value="yes">
<input class="SomeSpaceDude topcoat-button" type="file" name="testupload" >
<input class="SomeSpaceDude topcoat-button" type="submit" value="Upload">
</form>
</div>
when I run the file using localhost:8080 i get the message Hey file is uploaded, Yes! yes ! My web address becoming like : localhost:8080/_ah/upload/ahVkZXZ-Y... Checking on my bucket at google storage which has the name test-795 and nothing is uploaded.
I have also deploy it, and when I test it after pressing upload button, I get an empty page and web address link looks like: test-795.appspot.com/_ah/upload/AMmfu6... Checking at my bucket nothing inside again ofcourse. Any idea what am I missing here?
When you're running in the development server the file does not get uploaded to the real Cloud Storage service, only a local emulation.
On the production server, check the logs to see what might be happening with your upload.