es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo cargar un archivo en Google Drive con el nombre del archivo utilizando Apex.

Cuando subo un archivo usando esto, el archivo se sube pero el nombre del archivo no se sube. Por favor, ayúdame a resolver este problema.

Ayúdame a saber cómo enviar metadatos con esto.

Http http = new Http(); //
HttpRequest req1 = new HttpRequest();
req1.setMethod('POST'); // llamada al método
req1.setEndpoint('https://www.googleapis.com/upload/drive/v3/files?uploadType=media');
req1.setHeader('Authorization', 'Bearer ' + access_token); // proporcionar código de autenticación
req1.setHeader('Content-Type', 'image/jpeg');
//req1.setHeader('Content-Type', 'application/octet-stream');
req1.setHeader('Content-length', String.valueof(contentSize));
req1.setHeader('Accept','*/*');
req1.setBodyAsBlob(EncodingUtil.base64Decode(base64));
httpResponse res = new httpResponse();
system.debug('res>>>>>>'+res);
res = http.send(req1);
integer statusCode = res.getStatusCode();
string resBody = res.getBody();
req1.setTimeout(60 * 1000);
HttpResponse resp1 = http.send(req1);
System.debug(resp1.getBody());
system.debug('statusCode>>>>>>>>> '+statusCode);
system.debug('resBody>>>>>>>>>..' + resBody);

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para enviar metadatos junto con la carga de un archivo utilizando la API de Google Drive, es necesario establecer el encabezado del tipo de contenido en “multipart/related” y proporcionar una carga JSON con los metadatos en el cuerpo de la solicitud. Aquí hay un ejemplo de código para cargar un archivo con metadatos:

    Http http = new Http(); //
    HttpRequest req1 = new HttpRequest();
    req1.setMethod('POST'); //llamada al método
    req1.setEndpoint('https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart');
    req1.setHeader('Authorization', 'Bearer ' + access_token); //proporcionar el código de autenticación
    req1.setHeader('Content-Type', 'multipart/related; boundary="boundary_string"');
    Blob jsonBlob = Blob.valueOf('{"name": "my_file_name.jpg", "parents": ["folder_id_here"]}');
    Blob fileBlob = EncodingUtil.base64Decode(base64);
    String boundary = 'boundary_string';
    String body = '--' + boundary + '\r\n' +
                  'Content-Type: application/json\r\n\r\n' +
                  jsonBlob.toString() + '\r\n' +
                  '--' + boundary + '\r\n' +
                  'Content-Type: image/jpeg\r\n\r\n' +
                  fileBlob.toString() + '\r\n' +
                  '--' + boundary + '--';
    req1.setBodyAsBlob(Blob.valueOf(body));
    HttpResponse res = http.send(req1);
    System.debug(res.getBody());
    

    En este ejemplo, utilizamos una solicitud multipart con una cadena de límite para enviar tanto los metadatos JSON como el contenido del archivo en la misma solicitud. La cadena de límite separa las diferentes partes de la solicitud y se establecen los encabezados del tipo de contenido correspondientes. Los metadatos JSON se envían en la primera parte de la solicitud, seguidos del contenido del archivo en la segunda parte.

    Puede modificar la carga JSON para incluir cualquier metadato que necesite enviar junto con la carga de su archivo. Tenga en cuenta que deberá proporcionar el ID de la carpeta donde desea cargar el archivo en el campo “padres” de la carga JSON.

Comments are closed.