una subir proteger poner para online movil google funciona desde contraseƱa con como carpeta archivos archivo abrir coldfusion google-drive-sdk cfml

proteger - Subir archivos a Google Drive usando ColdFusion



poner contraseƱa a archivo de google drive (1)

Recomiendo encarecidamente tomar un enfoque diferente aquí. Hay dos grandes problemas con el camino que estás tomando:

  • Parece que el código está utilizando el mecanismo de autenticación de inicio de sesión de cliente obsoleto y está utilizando el nombre de usuario / contraseña en lugar de OAuth.
  • Usar la API de la lista de documentos en desuso en lugar de la API de Drive más reciente.

Ya que puede llamar a java, sugeriría escribir el código de carga en Java sin formato y luego invocarlo desde sus páginas CF según sea necesario.

* NUEVO ACTUALIZADO PARA MEJOR SEGUNDA PARTE: AHORA LLEGA A "308 Reanudar Incompleto", ¡aunque el archivo debe ser solo una carga!

Estoy usando la base de cfgoogle de Ray Camden. Pero Google ha desaprobado el código para subir documentos. El nuevo estándar es Resumable Media Uploads .

Tengo esta parte en funcionamiento (hasta e incluyendo la "Iniciando una solicitud de carga reanudable") en el documento de Google mencionado anteriormente.

Página de llamada:

<cfset application.cfc.Google = createObject(''component'',''#path_cf_cfc#Google'') /> <cfset application.cfc.GoogleDocs = createObject(''component'',''#path_cf_cfc#GoogleDocs'') /> <cfset gtoken = application.cfc.GoogleDocs.authenticate(emailaddress,password)> <CFSET testdoc = "a/filepath/documentname.doc"> <CFSET FileType = "application/msword"> <CFSET FileTitle = "test_001"> <cfset temp = application.cfc.GoogleDocs.upload_auth("#Application.Map.DocStorage##tv.testdoc#",FileType,FileTitle)> <CFSET uploadpath = Listgetat(Listgetat(temp.header,ListContains(temp.header,"https://docs.google.com","#chr(10)#"),"#chr(10)#"),2," ") > <cfset temp2 = application.cfc.GoogleDocs.upload_file("#Application.Map.DocStorage##tv.testdoc#",FileType,FileTitle,uploadpath)>

El código funciona hasta e incluyendo la línea temporal cfset (obteniendo el URI de carga único)

Aquí está el código para upload_auth:

<cffunction name="upload_auth" access="public" returnType="any" hint="I get a uniqu URI from Google API." output="false"> <cfargument name="myFile" type="string" required="true" hint="filepath to upload."> <cfargument name="myType" type="string" required="true" hint="application/msword"> <cfargument name="myTitle" type="string" required="true" hint="name of doc"> <cfset GoogleUrl = "https://docs.google.com/feeds/upload/create-session/default/private/full"> <cfset GoogleVersion = 3> <cfset FileSize = createObject("java","java.io.File").init(myFile).length()> <cfhttp url="#GoogleUrl#" method="post" result="diditwork" resolveurl="no"> <cfhttpparam type="header" name="Authorization" value="GoogleLogin auth=#getAuth(variables.docservice)#"> <cfhttpparam type="header" name="GData-Version" value="#GoogleVersion#"> <cfhttpparam type="header" name="Content-Length" value="0"> <cfhttpparam type="header" name="X-Upload-Content-Type" value="#myType#"> <cfhttpparam type="header" name="X-Upload-Content-Length" value="#FileSize#"> <cfhttpparam type="header" name="Slug" value="#myTitle#"> </cfhttp> <cfreturn diditwork> </cffunction>

OK - tan lejos tan bueno. Pero aquí es donde se rompe:

La ejecución de upload_file devuelve "308 Reanudar Incompleto" (¡A menos que no sea un 400!) De Google. Arrgh !!

Aquí está el upload_file -

<cffunction name="upload_file" access="public" returnType="any" hint="I upload the document." output="false"> <cfargument name="myFile" type="string" required="true" hint="filepath to upload."> <cfargument name="myType" type="string" required="true" hint="like application/msword"> <cfargument name="myTitle" type="string" required="true" hint="name of doc"> <cfargument name="myAuthPath" type="string" required="true" hint="call auth"> <cfset FileSize = GetFileInfo(myFile).size > <CFSET tv.tostartwithzero = FileSize - 1> <CFFILE action="read" file="#myfile#" variable="FileText"> <cfhttp url="#myAuthPath#" method="put" result="diditwork" resolveurl="no" multipart="yes" charset="utf-8" > <cfhttpparam type="header" name="Authorization" value="GoogleLogin auth=#getAuth(variables.docservice)#"> <cfhttpparam type="header" name="GData-Version" value="#variables.GoogleVersion#"> <cfhttpparam type="header" name="Content-Length" value="#FileSize#"> <cfhttpparam type="header" name="Content-Range" value="bytes 0-#tv.tostartwithzero#/#FileSize#"> <cfhttpparam type="header" name="Content-Type" value="#myType#"> <cfhttpparam type="body" value="#trim(FileText)#"> </cfhttp> <cfreturn diditwork> </cffunction>

Entonces, ahí lo tenemos, donde estoy atrapado. Puedo obtener el URI único, pero (tal vez porque es tarde en la noche) estoy completamente muerto en lo que estoy haciendo mal de lo contrario para completar la carga del archivo.

Toda la ayuda es apreciada.