diff --git a/container.inc b/container.inc
index c003316..38430c6 100644
--- a/container.inc
+++ b/container.inc
@@ -286,6 +286,19 @@ abstract class StorageContainer {
     }

     if (!$exists) {
+      // Check to make sure that the source file actually exists.
+      if (!file_exists($uri)) {
+        watchdog(
+          'storage_api',
+          'File not found to be uploaded (!uri). Removing storage record',
+          array(
+            '!uri' => $uri,
+          ),
+          WATCHDOG_ERROR
+        );
+        $storage->remove(TRUE);
+        return FALSE;
+      };
       $this->instanceCreate($storage, $uri);
     }
   }
diff --git a/services/s3.inc b/services/s3.inc
index da236f6..7855303 100644
--- a/services/s3.inc
+++ b/services/s3.inc
@@ -62,7 +62,10 @@ class StorageS3 extends StorageContainer implements StorageContainerInterface {

         if ($uri) {
           $fp = fopen($uri, 'r');
-
+          if ($fp === FALSE) {
+            throw new StorageException("Could not open source file");
+          }
+
           $components[1] = base64_encode($storage->md5);
           $components[2] = $storage->mimetype;
