title: Why is the image not uploading to the Firebase-storage and craching?
body: <p>I made an application that makes a list of people that contains (name, age, description and photo), but the problem is when I record the data in a file (AddPerson) and save it, the app craching</p>
  <p>this is the crash log:</p>
  <pre><code>E/StorageException: StorageException has occurred.
      User does not have permission to access this object.
       Code: -13021 HttpResult: 403
  E/StorageException: The server has terminated the upload session
      java.io.IOException: The server has terminated the upload session
          at com.google.firebase.storage.UploadTask.serverStateValid(UploadTask.java:339)
          at com.google.firebase.storage.UploadTask.shouldContinue(UploadTask.java:308)
          at com.google.firebase.storage.UploadTask.run(UploadTask.java:229)
          at com.google.firebase.storage.StorageTask.lambda$getRunnable$7$com-google-firebase-storage-StorageTask(StorageTask.java:1072)
          at com.google.firebase.storage.StorageTask$$ExternalSyntheticLambda3.run(Unknown Source:2)
          at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
          at java.lang.Thread.run(Thread.java:923)
       Caused by: java.io.IOException: {  &quot;error&quot;: {    &quot;code&quot;: 403,    &quot;message&quot;: &quot;Permission denied.&quot;  }}
          at com.google.firebase.storage.network.NetworkRequest.parseResponse(NetworkRequest.java:445)
          at com.google.firebase.storage.network.NetworkRequest.parseErrorResponse(NetworkRequest.java:462)
          at com.google.firebase.storage.network.NetworkRequest.processResponseStream(NetworkRequest.java:453)
          at com.google.firebase.storage.network.NetworkRequest.performRequest(NetworkRequest.java:272)
          at com.google.firebase.storage.network.NetworkRequest.performRequest(NetworkRequest.java:289)
          at com.google.firebase.storage.internal.ExponentialBackoffSender.sendWithExponentialBackoff(ExponentialBackoffSender.java:76)
          at com.google.firebase.storage.internal.ExponentialBackoffSender.sendWithExponentialBackoff(ExponentialBackoffSender.java:68)
          at com.google.firebase.storage.UploadTask.sendWithRetry(UploadTask.java:477)
          at com.google.firebase.storage.UploadTask.beginResumableUpload(UploadTask.java:276)
          at com.google.firebase.storage.UploadTask.run(UploadTask.java:224)
          at com.google.firebase.storage.StorageTask.lambda$getRunnable$7$com-google-firebase-storage-StorageTask(StorageTask.java:1072) 
          at com.google.firebase.storage.StorageTask$$ExternalSyntheticLambda3.run(Unknown Source:2) 
          at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) 
          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) 
          at java.lang.Thread.run(Thread.java:923) 
      StorageException has occurred.
      User does not have permission to access this object.
       Code: -13021 HttpResult: 403
  E/StorageException: The server has terminated the upload session
      java.io.IOException: The server has terminated the upload session
          at com.google.firebase.storage.UploadTask.serverStateValid(UploadTask.java:339)
          at com.google.firebase.storage.UploadTask.shouldContinue(UploadTask.java:308)
          at com.google.firebase.storage.UploadTask.run(UploadTask.java:229)
          at com.google.firebase.storage.StorageTask.lambda$getRunnable$7$com-google-firebase-storage-StorageTask(StorageTask.java:1072)
          at com.google.firebase.storage.StorageTask$$ExternalSyntheticLambda3.run(Unknown Source:2)
          at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
          at java.lang.Thread.run(Thread.java:923)
       Caused by: java.io.IOException: {  &quot;error&quot;: {    &quot;code&quot;: 403,    &quot;message&quot;: &quot;Permission denied.&quot;  }}
          at com.google.firebase.storage.network.NetworkRequest.parseResponse(NetworkRequest.java:445)
          at com.google.firebase.storage.network.NetworkRequest.parseErrorResponse(NetworkRequest.java:462)
          at com.google.firebase.storage.network.NetworkRequest.processResponseStream(NetworkRequest.java:453)
          at com.google.firebase.storage.network.NetworkRequest.performRequest(NetworkRequest.java:272)
          at com.google.firebase.storage.network.NetworkRequest.performRequest(NetworkRequest.java:289)
          at com.google.firebase.storage.internal.ExponentialBackoffSender.sendWithExponentialBackoff(ExponentialBackoffSender.java:76)
          at com.google.firebase.storage.internal.ExponentialBackoffSender.sendWithExponentialBackoff(ExponentialBackoffSender.java:68)
          at com.google.firebase.storage.UploadTask.sendWithRetry(UploadTask.java:477)
          at com.google.firebase.storage.UploadTask.beginResumableUpload(UploadTask.java:276)
          at com.google.firebase.storage.UploadTask.run(UploadTask.java:224)
          at com.google.firebase.storage.StorageTask.lambda$getRunnable$7$com-google-firebase-storage-StorageTask(StorageTask.java:1072) 
          at com.google.firebase.storage.StorageTask$$ExternalSyntheticLambda3.run(Unknown Source:2) 
          at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) 
          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) 
          at java.lang.Thread.run(Thread.java:923) 
  
  </code></pre>
  <p>this is codes for <code>AddPerson</code>:</p>
  <pre><code>public class AddPersonextends AppCompatActivity {
  
      private TextInputEditText mFirstName, mLastName, mAge, mDescription;
  
      private String firstNameString, lastNameString, ageString, descriptionString;
      private Uri imageUri = null;
  
      CardView mInsertImage;
      ImageView mImageView;
  
      private static final int IMAGE_PICK_CODE = 1000;
  
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_add_person);
  
          mFirstName = findViewById(R.id.first_name_input);
          mLastName = findViewById(R.id.last_name_input);
          AboutMissingSpinner = findViewById(R.id.spinner_about_missing);
          mAge = findViewById(R.id.age_input);
          mDescription = findViewById(R.id.description_input);
  
          mInsertImage = findViewById(R.id.insert_image);
          mImageView = findViewById(R.id.imageView);
  
  
          mInsertImage.setOnClickListener(v -&gt; pickImageFromGallery());
      }
  
      private void pickImageFromGallery() {
          Intent i = new Intent();
          i.setType(&quot;image/*&quot;);
          i.setAction(Intent.ACTION_GET_CONTENT);
          startActivityForResult(i, IMAGE_PICK_CODE);
      }
  
      @Override
      protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
          if (resultCode == RESULT_OK &amp;&amp; requestCode == IMAGE_PICK_CODE) {
              assert data != null;
              imageUri = data.getData();
              mImageView.setImageURI(data.getData());
          }
          super.onActivityResult(requestCode, resultCode, data);
      }
  
      private void insertPerson() {
          firstNameString = Objects.requireNonNull(mFirstName.getText()).toString().trim();
          lastNameString = Objects.requireNonNull(mLastName.getText()).toString().trim();
          ageString = Objects.requireNonNull(mAge.getText()).toString().trim();
          descriptionString = Objects.requireNonNull(mDescription.getText()).toString().trim();
  
          if (TextUtils.isEmpty(lastNameString)) {
              lastNameString = &quot;&quot;;
          }
  
          if (TextUtils.isEmpty(firstNameString) &amp;&amp; TextUtils.isEmpty(lastNameString)
                  &amp;&amp; TextUtils.isEmpty(ageString) &amp;&amp; TextUtils.isEmpty(descriptionString)) {
              return;
          }
  
          uploadImage();
      }
  
      private void uploadImage() {
          long timestamp = System.currentTimeMillis();
          String filePathAndName = &quot;images/&quot; + timestamp;
  
          StorageReference storageReference = FirebaseStorage.getInstance().getReference(filePathAndName);
          storageReference.putFile(imageUri)
                  .addOnSuccessListener(taskSnapshot -&gt; {
                      Task&lt;Uri&gt; uriTask = taskSnapshot.getStorage().getDownloadUrl();
                      while (!uriTask.isSuccessful());
                      String uploadedImageUri = &quot;&quot; + uriTask.getResult();
                      sendList(uploadedImageUri, timestamp);
                  }).addOnFailureListener(e -&gt; {
  
                  });
      }
  
      @Override
      public boolean onCreateOptionsMenu(Menu menu) {
          super.onCreateOptionsMenu(menu);
          getMenuInflater().inflate(R.menu.menu_add_person, menu);
          return true;
      }
  
      public boolean onOptionsItemSelected(MenuItem item) {
          if (item.getItemId() == R.id.action_save) {
              insertPerson();
              finish();
              return true;
          } else if (item.getItemId() == android.R.id.home) {
              if (TextUtils.isEmpty(firstNameString) &amp;&amp; TextUtils.isEmpty(lastNameString)
                      &amp;&amp; TextUtils.isEmpty(ageString) &amp;&amp; TextUtils.isEmpty(descriptionString)) {
              }
  
              showUnsavedChangesDialog();
              return true;
          }
          return super.onOptionsItemSelected(item);
      }
  
      private void sendList(String uploadedImageUri, long timestamp) {
          DatabaseReference reference = FirebaseDatabase.getInstance().getReference(&quot;List&quot;);
          HashMap&lt;String, Object&gt; hashMap = new HashMap&lt;&gt;();
  
          hashMap.put(&quot;firstName&quot;, firstNameString);
          hashMap.put(&quot;lastName&quot;, lastNameString);
          hashMap.put(&quot;age&quot;, ageString);
          hashMap.put(&quot;description&quot;, descriptionString);
          hashMap.put(&quot;url&quot;, uploadedImageUri);
          hashMap.put(&quot;timestamp&quot;, timestamp);
  
          reference.push().setValue(hashMap);
      }
  }
  </code></pre>