Como posso fazer upload de um arquivo para o Kloudless do meu Android?

dinesh reddy

Eu queria fazer upload de um arquivo do meu armazenamento interno do Android para qualquer armazenamento em nuvem (ex.google drive, One drive etc), pois kloudless fornece uma API para fazer upload de arquivo para qualquer armazenamento em nuvem usando accesstoken Eu queria usar a mesma API para fazer upload do arquivo ( https://api.kloudless.com/v1/accounts/accountid+/storage/files/ ).

Eu tentei através do carteiro consigo fazer o upload do arquivoinsira a descrição da imagem aqui

Agora que tentei através do Android Volley, consigo criar o arquivo na nuvem, mas não há dados dentro dele. Aqui está o meu código

public class MainActivity extends AppCompatActivity {
Button b;
TextView TV;
File myFile;
String responseString;
String path;
public String BASE_URL = "https://api.kloudless.com";
private static final int FILE_SELECT_CODE = 0;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    TV = findViewById(R.id.textView);
    b = findViewById(R.id.button);
    b.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            showFileChooser();
        }
    });
}

private void showFileChooser() {
    Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
    intent.setType("*/*");
    intent.addCategory(Intent.CATEGORY_OPENABLE);

    try {
        startActivityForResult(
                Intent.createChooser(intent, "Select a File to Upload"),
                FILE_SELECT_CODE);
    } catch (android.content.ActivityNotFoundException ex) {
        // Potentially direct the user to the Market with a Dialog
        Toast.makeText(this, "Please install a File Manager.",
                Toast.LENGTH_SHORT).show();
    }
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == FILE_SELECT_CODE) {
        if (resultCode == RESULT_OK) {
            // Get the Uri of the selected file
            Uri uri = data.getData();
            Log.d("TAG", "File Uri: " + uri.toString());
            // Get the path
            String path = null;
            try {
                path = FileUtils.getPath(this, uri);
            } catch (URISyntaxException e) {
                e.printStackTrace();
            }
            Log.d("TAG", "File Path: " + path);
            try {
                data();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }

        }
    }
    super.onActivityResult(requestCode, resultCode, data);
}
public void data() throws FileNotFoundException, UnsupportedEncodingException {
    final String url = BASE_URL + "/v1/accounts/" + "accountid" + "/storage/files/";

    final RequestQueue queue = Volley.newRequestQueue(this);
    HashMap<String, Object> params = new HashMap<String, Object>();
    params.put( "file","somedata");

    JSONObject Body=new JSONObject(params);

    final JsonObjectRequest request = new JsonObjectRequest(Request.Method.POST, url,Body, new Response.Listener<JSONObject>() {
        @Override
        public void onResponse(JSONObject response) {
            // response
            Log.d("Response", response.toString());
        }
    },
            new ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    // error
                    Log.d("Error.Response", error.toString());
                }
            }) {
        @Override
        public Map<String, String> getHeaders() throws AuthFailureError {
            HashMap<String, String> params = new HashMap<String, String>();
            params.put("Authorization", "Bearer Bearerkey");
              params.put("Content-Type", "form-data");
            params.put("X-Kloudless-Metadata", "{\"parent_id\":\"root\",\"name\":\"testdone.txt\"}");
         //   params.put("Content-Length", Space);
            return params;
        }



    };
    queue.add(request);
}

Por favor me ajude como enviar o arquivo no corpo da minha solicitação

dinesh reddy

Finalmente encontrei a solução simples para fazer upload de um arquivo para api

 RequestQueue queue = Volley.newRequestQueue(this);
    String url = BASE_URL + "/v1/accounts/" + "353284419" + "/storage/files/";
    StringRequest postRequest = new StringRequest(Request.Method.POST, url,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    Toast.makeText(MainActivity.this, response, Toast.LENGTH_LONG).show();
                    // response
                    Log.d("Response", response);
                }
            },
            new ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    // error
                    Log.d("Error.Response", error.toString());
                }
            }
    ) {
        @Override
        public Map<String, String> getHeaders() throws AuthFailureError {
            Map<String, String> params = new HashMap<String, String>();
            params.put("Authorization", "Bearer ix7wW4CFJsHxhttg42qsO6HNNRPh06");
            params.put("Content-Type", "application/octet-stream");
            params.put("X-Kloudless-Metadata", "{\"parent_id\":\"root\",\"name\":\"testing uplodes.pdf\"}");
            //      params.put("Content-Length", Space);
            return params;
        }

        @Override
        public byte[] getBody() throws com.android.volley.AuthFailureError {
            File f=new File(path);
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            FileInputStream fis = null;
            try {
                fis = new FileInputStream(f);
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }
            byte[] bytesArray = new byte[(int)f.length()];
            try {
                fis.read(bytesArray);
            } catch (IOException e) {
                e.printStackTrace();
            }
            return bytesArray;
        };

    };
    postRequest.setRetryPolicy(new DefaultRetryPolicy(
            40000,
            DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
            DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
    queue.add(postRequest);
   }

basta converter o arquivo em array binário e enviá-lo no corpo

Este artigo é coletado da Internet.

Se houver alguma infração, entre em [email protected] Delete.

editar em
0

deixe-me dizer algumas palavras

0comentários
loginDepois de participar da revisão

Artigos relacionados

Como fazer upload de um arquivo do meu armazenamento local para o S3?

Como posso fazer upload de um arquivo de imagem do NSUserDefault salvo para o servidor php?

Como posso fazer com que meu botão de upload de arquivo tenha um estado flutuante?

Como fazer upload de um arquivo sqlite db para o servidor ftp a partir do programa android

Como posso fazer upload de um arquivo para o servidor, sem navegador, usando go?

Como posso fazer upload de um arquivo para o rackspace usando RESTSharp e .net 4.0?

Como posso fazer upload de um arquivo pdf para o MySql?

Como posso configurar o CORS corretamente para fazer upload do arquivo com um presignedUrl para o armazenamento do Firebase?

Como posso fazer com que um arquivo de imagem apareça por padrão no meu componente Upload? (React.js)

Como posso fazer um loop de um arquivo de dados para exibir o conteúdo?

Não é possível fazer upload do arquivo como um caminho para o meu formulário usando reactjs

Como fazer upload de um arquivo do aplicativo do console para o site MVC?

Como fazer download de um arquivo do meu Google Drive para meu arquivo local de Downloads

Como fazer upload de um arquivo de imagem do cliente para o corretor mqtt

Como fazer upload de um arquivo para o OneDrive usando a API REST do OneDrive?

Como posso fazer upload do meu esboço para o Arduino Nano?

Como posso fazer upload de um arquivo para S3 via Powershell com criptografia AES256 sem instalar o SDK do AWS?

Como posso fazer uma solicitação a um site para obter fotos de cães para o meu bot do discord?

Como posso fazer upload de um arquivo iCal para a agenda de um usuário

Como posso fazer o `source` de um arquivo no meu caminho e preenchê-lo com tabulação?

Como posso fazer upload de um arquivo svg para um aplicativo django?

Como fazer upload de fotos para um arquivo no meu computador usando Django rest framework

Como posso fazer upload do arquivo para o Google Drive com a API do Google Drive?

No flutter, depois de fazer o upload de um arquivo para o armazenamento do firebase, como obtenho o URL público?

Como remover o arquivo existente ao fazer upload de um novo no upload do arquivo codeigniter?

Como posso fazer upload do meu site?

Como posso fazer upload de um link para uma função href através do painel de administração no django?

Como posso usar ou simular IWebJobsBuilder para fazer um teste de integração do meu Azure Function v2?

Como fazer upload de um arquivo .hex para o arduino uno via USB a partir de um dispositivo Android?

TOP lista

  1. 1

    R Shiny: use HTML em funções (como textInput, checkboxGroupInput)

  2. 2

    O Chromium e o Firefox exibem as cores de maneira diferente e não sei qual deles está fazendo certo

  3. 3

    Como assinar digitalmente um documento PDF com assinatura e texto visíveis usando Java

  4. 4

    R Folheto. Dados de pontos de grupo em células para resumir muitos pontos de dados

  5. 5

    Gerenciar recurso shake de Windows Aero com barra de título personalizado

  6. 6

    Como obter dados API adequados para o aplicativo angular?

  7. 7

    UITextView não está exibindo texto longo

  8. 8

    Por que meus intervalos de confiança de 95% da minha regressão multivariada estão sendo plotados como uma linha de loess?

  9. 9

    Acessando relatório de campanhas na AdMob usando a API do Adsense

  10. 10

    Usando o plug-in Platform.js do Google

  11. 11

    Como posso modificar esse algoritmo de linha de visada para aceitar raios que passam pelos cantos?

  12. 12

    Dependência circular de diálogo personalizado

  13. 13

    Coloque uma caixa de texto HTML em uma imagem em uma posição fixa para site para desktop e celular

  14. 14

    iOS: como adicionar sombra projetada e sombra de traço no UIView?

  15. 15

    Como usar a caixa de diálogo de seleção de nomes com VBA para enviar e-mail para mais de um destinatário?

  16. 16

    Tabela CSS: barra de rolagem para a primeira coluna e largura automática para a coluna restante

  17. 17

    How to create dynamic navigation menu select from database using Codeigniter?

  18. 18

    Converter valores de linha SQL em colunas

  19. 19

    ChartJS, várias linhas no rótulo do gráfico de barras

  20. 20

    用@StyleableRes注释的getStyledAttributes。禁止警告

  21. 21

    não é possível adicionar dependência para com.google.android.gms.tasks.OnSuccessListener

quentelabel

Arquivo