This commit is contained in:
Anthony Berton 2022-08-03 15:59:53 +02:00
parent 07f9541efd
commit 985d9b3624
3 changed files with 52 additions and 6 deletions

View File

@ -222,11 +222,12 @@ function dol_ftp_get($connect_id, $file, $newsection)
* Upload a FTP file
*
* @param resource $connect_id Connection handler
* @param string $file File
* @param string $newsection $newsection
* @param string $file File name
* @param string $localfile The path to the local file
* @param string $newsection $newsection
* @return result
*/
function dol_ftp_put($connect_id, $file, $newsection)
function dol_ftp_put($connect_id, $file, $localfile, $newsection)
{
global $conf;
@ -241,9 +242,9 @@ function dol_ftp_put($connect_id, $file, $newsection)
$newremotefileiso = utf8_decode($remotefile);
if (!empty($conf->global->FTP_CONNECT_WITH_SFTP)) {
return fopen('ssh2.sftp://'.intval($connect_id).$newremotefileiso, 'r');
return ssh2_scp_send($connect_id, $localfile, $newremotefileiso, 0644);
} else {
return ftp_put($connect_id, $localfile, $newremotefileiso, FTP_BINARY);
return ftp_put($connect_id, $newremotefileiso, $localfile, FTP_BINARY);
}
}

View File

@ -131,6 +131,39 @@ if (GETPOST("sendit") && !empty($conf->global->MAIN_UPLOAD_DOC)) {
}
}
if ($action == 'uploadfile') {
// set up a connection or die
if (!$conn_id) {
$newsectioniso = utf8_decode($section);
$resultarray = dol_ftp_connect($ftp_server, $ftp_port, $ftp_user, $ftp_password, $newsectioniso, $ftp_passive);
$conn_id = $resultarray['conn_id'];
$ok = $resultarray['ok'];
$mesg = $resultarray['mesg'];
}
if ($conn_id && $ok && !$mesg) {
// var_dump($_FILES['userfile']['name']);
$nbfile = count($_FILES['userfile']['name']);
$i = 0;
for (; $i < $nbfile; $i++) {
var_dump($i);
$newsection = $newsectioniso;
$fileupload = $_FILES['userfile']['name'][$i];
$fileuploadpath = $_FILES['userfile']['tmp_name'][$i];
$result = dol_ftp_put($conn_id, $fileupload, $fileuploadpath, $newsection);
if ($result) {
setEventMessages($langs->trans("FileWasUpload", $fileupload), null, 'mesgs');
} else {
dol_syslog("ftp/index.php ftp_delete", LOG_ERR);
setEventMessages($langs->trans("FTPFailedToUploadFile", $fileupload), null, 'errors');
}
}
$action = '';
} else {
dol_print_error('', $mesg);
}
}
// Action ajout d'un rep
if ($action == 'add' && $user->rights->ftp->setup) {
$ecmdir->ref = GETPOST("ref");
@ -589,6 +622,16 @@ if (!function_exists('ftp_connect')) {
print '</div>';
print "</form>";
print '<form enctype="multipart/form-data" action="'.$_SERVER["PHP_SELF"].'" method="post">';
print '<input type="hidden" name="token" value="'.newToken().'">';
print '<input type="hidden" name="numero_ftp" value="'.$numero_ftp.'">';
print '<input type="hidden" name="section" value="'.$section.'">';
print '<input type="hidden" name="action" value="uploadfile">';
print '<td><input type="file" class="flat" name="userfile[]" multiple></td>';
print '<td></td>';
print '<td align="center"><button type="submit" class="butAction" name="uploadfile" value="'.$langs->trans("Save").'">'.$langs->trans("Upload").'</button></td>';
print '</form>';
} else {
$foundsetup = false;
$MAXFTP = 20;

View File

@ -325,4 +325,6 @@ FTPFailedToRemoveDir=Failed to remove directory <b>%s</b>: check permissions and
FTPPassiveMode=Passive mode
ChooseAFTPEntryIntoMenu=Choose a FTP/SFTP site from the menu...
FailedToGetFile=Failed to get files %s
ErrorFTPNodisconnect=Error to disconnect FTP/SFTP server
ErrorFTPNodisconnect=Error to disconnect FTP/SFTP server
FileWasUpload=File <b>%s</b> was upload
FTPFailedToUploadFile=Failed to upload file <b>%s</b>.