2013-05-14 3 views
8

Je souhaite être en mesure de télécharger un fichier distant sur mon serveur via phpbb sans avoir d'abord téléchargé le fichier sur mon ordinateur. Comment cela peut il etre accompli?Téléchargement de fichier distant phpBB

J'ai un code simple que j'ai testé et qui fait le travail, mais où puis-je le mettre et que dois-je modifier dans phpBB?

<form method="post"> 
    <input name="url" size="50"/> 
    <input name="submit" type="submit"/> 
</form> 

<?php 
// maximum execution time in seconds 
set_time_limit(24 * 60 * 60); 

if (!isset($_POST['submit'])) die(); 

// folder to save downloaded files to. must end with slash 
$destination_folder = 'mydownloads/'; 

$url = $_POST['url']; 
$newfname = $destination_folder . basename($url); 

//Open remote file 
$file = fopen($url, "rb"); 
if ($file) { 
    //Write to local file 
    $newf = fopen($newfname, "wb"); 
    if ($newf) { 
     while (!feof($file)) { 
      fwrite($newf, fread($file, 1024 * 8), 1024 * 8); 
     } 
    } 
} 

if ($file) { 
    fclose($file); 
} 

if ($newf) { 
    fclose($newf); 
} 
?> 

Ou est-il possible de puiser dans la fonction à distance avatar dans phpBB (c.-à-includes/functions_upload.php -.> Remote_upload fonction (UPLOAD_URL de $))? J'ai bien sûr besoin que le fichier distant soit envoyé via les fonctions habituelles de phpBB pour être inséré dans la DB et tout.

+0

version utilisez-vous ? – Abadis

+0

la dernière version - 3.0.11 –

+1

Créez une sauvegarde de ** includes/functions_upload.php ** puis ouvrez l'original, placez votre code si nécessaire et suivez le processus que PHPBB télécharge les fichiers (insertion dans db, vérifier les fichiers malveillants) et l'essayer. –

Répondre

4
fichier ouvert

comprend/message_parser.php

trouver à propos de la ligne 1373

$upload_file = (isset($_FILES[$form_name]) && $_FILES[$form_name]['name'] != 'none' && trim($_FILES[$form_name]['name'])) ? true : false; 

et les remplacer par

$upload_file = (isset($_FILES[$form_name]) && $_FILES[$form_name]['name'] != 'none' && trim($_FILES[$form_name]['name'])) ? true : (!empty($_POST['urlupload'])) ? true : false; 
fichier ouvert

includes/functions_posting.php

trouver à propos de la ligne 414

$file = ($local) ? $upload->local_upload($local_storage, $local_filedata) : $upload->form_upload($form_name); 

remplacer par

$file = ($local) ? $upload->local_upload($local_storage, $local_filedata) : (!empty($_POST['urlupload'])) ? $upload->remote_upload($_POST['urlupload']) : $upload->form_upload($form_name); 

styles ouverts/your_style/templates/posting_attach_body.html

trouver

<dl> 
    <dt><label for="fileupload">{L_FILENAME}:</label></dt> 
    <dd> 
     <input type="file" name="fileupload" id="fileupload" maxlength="{FILESIZE}" value="" class="inputbox autowidth" /> 
     <input type="submit" name="add_file" value="{L_ADD_FILE}" class="button2" onclick="upload = true;" /> 
    </dd> 
</dl> 

ajouter après

<dl> 
    <dt><label for="urlupload">Remote File:</label></dt> 
    <dd> 
     <input type="url" name="urlupload" id="urlupload" maxlength="{FILESIZE}" value="" class="inputbox autowidth" /> 
     <input type="submit" name="add_file" value="{L_ADD_FILE}" class="button2" onclick="upload = true;" /> 
    </dd> 
</dl> 

Le t-moi savoir si vous me souhaitez créer un mod pour vous d'installer avec AutoMod ou si vous avez besoin types MIME supplémentaires avec la fonction remote_upload

testé @http:/www.damienkeitel.com

+2

Automod installer ici -> https://www.phpbb.com/community/viewtopic.php?f=70&t=2184331&p=13312954 –

+0

Merci pour le mod, c'est plus que ce que je pouvais espérer. J'ai essayé mais j'ai un problème, j'obtiens => L'URL que vous avez indiquée est invalide. en essayant de télécharger. Je sais que cette URL est bien. –

+0

Avez-vous utilisé des extensions et autorisé les extensions? post/groupe d'extensions de gestion, puis cliquez sur l'une des roues dentées pour activer différents types de fichiers/extensions à utiliser –