Forum Discussion

ijunaid8989's avatar
ijunaid8989
Explorer | Level 3
6 years ago

too many write operations when uploading files

I am using Elixir wrapper to DropboxAPI to upload files, which is doing simple upload using `files/upload` route.

  def upload(client, path, file, mode \\ "add", autorename \\ true, mute \\ false) do
    dropbox_headers = %{
      :path => path,
      :mode => mode,
      :autorename => autorename,
      :mute => mute
    }

    headers = %{
      "Dropbox-API-Arg" => Poison.encode!(dropbox_headers),
      "Content-Type" => "application/octet-stream"
    }

    upload_request(
      client,
      Application.get_env(:elixir_dropbox, :upload_url),
      "files/upload",
      file,
      headers
    )
  end

But I am having an issue lately while uploading so many files parallelly, I am getting an error as `too many write operations`

 

I have been reading and looking into https://www.dropbox.com/developers/documentation/http/documentation#files-upload_session-start

 

But I am not following it totally, What I read from it, I can upload multiple files in one session, When I start a session while uploading one file, I think it works for sending chunks of a single file not, different files.

 

But https://www.dropbox.com/developers/documentation/http/documentation#files-upload_session-finish_batch

 

says, This route helps you commit many files at once into a user's Dropbox.

 

But how?? How I can send multiple files to Dropbox account not 

  • Hello,

    The data ingress guide should be of some help here. Specifically, there are some instructions towards the bottom that explain how to handle many files in parallel. 

    I'll paraphrase a bit here:

    Hope that helps! 

    • ijunaid8989's avatar
      ijunaid8989
      Explorer | Level 3

      Okay I have few questions:

       

      How to organize files into batches of under 1000? like is there any structure for it? which is not written in documentation? 

      and how you can pas that batch of files to the endpoint? 

       

      First I made a new client with the access token

      iex(3)> client = ElixirDropbox.Client.new("PWK08cePo_kAAAAAAAB2oRsQSyG")
      %ElixirDropbox.Client{
      access_token: "PWK08cePo_kAAAAAAAB2oRsQSyG"
      }

      and uploaded a file 

       

      iex(4)> ElixirDropbox.Files.UploadSession.start(client, false, "mix.lock")
      %{"session_id" => "AAAAAAAYclutwUwG5odRew"}

      with close: false,

       

      iex(5)> ElixirDropbox.Files.UploadSession.append(client, "AAAAAAAYclutwUwG5odRew", false, "mix.exs")
      {{:status_code, 409},
       {:ok,
        %{
          "error" => %{".tag" => "incorrect_offset", "correct_offset" => 18597},
          "error_summary" => "incorrect_offset/."
        }}}

      I uploaded another file now, with the session id, and it gave me error as above? 

       

      What is the proper way of sending the batches of files? 

       

      https://www.dropbox.com/developers/documentation/http/documentation#files-upload_session-start I don't see any such information here? 

About Dropbox API Support & Feedback

Node avatar for Dropbox API Support & Feedback
Find help with the Dropbox API from other developers.5,950 PostsLatest Activity: 14 hours ago
351 Following

If you need more help you can view your support options (expected response time for an email or ticket is 24 hours), or contact us on X or Facebook.

For more info on available support options for your Dropbox plan, see this article.

If you found the answer to your question in this Community thread, please 'like' the post to say thanks and to let us know it was useful!