Every client is uploading files by himself over web form, so I must automate the process by letting them upload files directly to their Lead.
I came up with solution that worked for me at the end for upload but another problem occurred.
When converting those leads with attachments, files are not mapped to their appropriate Account/Contant. But when I attach a file directly on Salesforce, files are mapped.
I guess I'm missing something in my code that doesn't allow file to be mapped further upon conversion.
FeedItem feedItem = new FeedItem();
feedItem.Body = message;
feedItem.ParentId = LeadID;
feedItem.Title = FileName;
sObject[] posts = new sObject[] { feedItem };
SaveResult[] results = Binding.create(posts);
ContentVersion contentVersion = new ContentVersion();
contentVersion.Title = FileName;
contentVersion.VersionData = content;
contentVersion.PathOnClient = FileName;
sObject[] posts2 = new sObject[] { contentVersion };
SaveResult[] results2 = Binding.create(posts2);
FeedAttachment feedAttachment = new FeedAttachment();
feedAttachment.FeedEntityId = results[0].id;
feedAttachment.RecordId = results2[0].id;
feedAttachment.Title = FileName;
feedAttachment.Type = "CONTENT";
sObject[] posts3 = new sObject[] { feedAttachment };
SaveResult[] results3 = Binding.create(posts3);