Oto rozwiązanie (Zend Framework 1.12, natomiast z normalnym php logika jest podobna):
$("#add_protocol_scan").submit(function(e) {
e.preventDefault();
queryActionAndEmail('<?php echo $this->contact_id; ?>', '<?php echo $this->developer_id; ?>', '<?php echo $this->investment_id; ?>');
});
//Gdzieś tam zakopana...
function queryActionAndEmail(contactId, developerId, investmentId){
var fileSelect = document.getElementById('protocol_scan');
var files = fileSelect.files;
var formData = new FormData();
formData.append('file', files[0]);
formData.append('contact_id', contactId);
formData.append('developer_id', developerId);
formData.append('investment_id', investmentId);
showPreloader();
$.ajax({
url: "/query/index/query-action-and-email/",
data: formData,
cache: false,
contentType: false,
processData: false,
type: 'post',
success: function(data) {
//cos tam dalej
}
});
/**
* Firstly unlinks all previous tmp files (if exists)
* Secondly creates tmp file for second dialog
*/
$user = Zend_Registry::get('user');
$path = APPLICATION_PATH . '/data/client/' . $user->getUserCid();
$documentPath = $path . '/documents/documents/';
foreach (glob($documentPath.'tmp_protocol_*') as $filename) {
unlink($filename);
}
$upload = new Zend_File_Transfer_Adapter_Http();
$files = $upload->getFileInfo();
if (!empty($files)) {
$files['file']['name'] = 'tmp_protocol_' . md5($files['file']['name'] . rand(0, 99999));
$upload->addFilter('Rename', $documentPath . $files['file']['name']);
if ($upload->isUploaded($file) && $upload->isValid($file)) {
$upload->receive($file);
}
}
Później pobieramy ten plik i wrzucamy do inputa.