Solución:
Objeto ContentDocument no permite insertar DML operación en Salesforce, por lo que podemos cargarlo a través del ContentVersion objeto, sin ContentDocumentId. Después de DML en ContentVersion, se creará una nueva versión de ContentDocument para nosotros en Salesforce.
La forma más sencilla de hacer esto es usar inputFile y asignarlo a la instancia de ContentVersion. Como esto:
<apex:page controller="ContentController">
<apex:form>
<apex:inputFile value="{!file}" />
<apex:commandbutton action="{!upload}" value="Upload" />
</apex:form>
</apex:page>
Clase:
public class ContentController {
public blob file { get; set; }
public PageReference upload() {
ContentVersion v = new ContentVersion();
v.versionData = file;
v.title="testing upload";
v.pathOnClient="/somepath.txt";
insert v;
return new PageReference("https://foroayuda.es/" + v.id);
}
}
Si desea compartir el archivo ContentVersion, luego de insertar DML, consulte ContentDocumentId de ContentVersion insertado y use ContentDocumentLink para crear una asociación entre Record y el archivo cargado ContentVersion.
https://developer.salesforce.com/docs/atlas.en-us.api.meta/api/sforce_api_objects_contentdocumentlink.htm
Usar “LinkedEntityId“para colocar el ID de registro al que se asociará este archivo.
Nota: LinkedEntityId – Puede incluir usuarios, grupos, registros de Chatter (cualquiera que admita el seguimiento de noticias en tiempo real de Chatter, incluidos objetos personalizados) y bibliotecas de contenido de Salesforce CRM.
Espero que esto ayude y marque esto como respuesta si lo hace. Gracias
Encontré una manera de insertar ContentVersion y adjuntarlo a Record en un SOQL.
<apex:page controller="ContentController">
<apex:form>
<apex:inputFile value="{!file}" />
<apex:commandbutton action="{!upload}" value="Upload" />
</apex:form>
</apex:page>
Clase:
public class ContentController {
public blob file { get; set; }
public PageReference upload() {
ContentVersion v = new ContentVersion();
v.versionData = file;
v.title="testing upload";
v.pathOnClient="/somepath.txt";
v.FirstPublishLocationId = parentObj.Id; //similar to parentid
insert v;
return new PageReference("https://foroayuda.es/" + v.id);
}
}