2013-05-14 18 views
8

Chcę móc przesłać zdalny plik do mojego serwera za pośrednictwem phpbb, bez wcześniejszego pobrania pliku na mój komputer. Jak można to osiągnąć?Zdalne przesyłanie pliku phpBB

Mam prosty kod, który przetestowałem i wykonuje on zadanie, ale gdzie mogę go umieścić i co muszę zmodyfikować w 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); 
} 
?> 

Czy jest to możliwe, aby dopasować się do funkcji zdalnego awatara w phpBB (tj includes/functions_upload.php. -> funkcja remote_upload ($ upload_url))? Oczywiście potrzebuję zdalnego pliku do wysłania za pomocą zwykłych funkcji phpBB do wstawienia do DB i wszystkich.

+0

której wersji używasz ? – Abadis

+0

najnowszą wersję - 3.0.11 –

+1

Utwórz kopię zapasową pliku ** includes/functions_upload.php **, a następnie otwórz oryginał, umieść swój kod w razie potrzeby, a następnie postępuj zgodnie z procesem, w którym PHPBB przesyła pliki (wstawiając do db, sprawdzanie złośliwych plików) i wypróbowanie. –

Odpowiedz

4

otwarty plik includes/message_parser.php

znaleźć około 1373 linii

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

i zastąpić

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

otwartego pliku includes/functions_posting.php

dowiedzieć o linię 414

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

zastąpić

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

otwartych style/your_style/szablony/posting_attach_body.html

znaleźć

<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> 

dodać po

<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 mi znać, jeśli chcesz mi stworzyć mod do zainstalowania z automod lub jeśli potrzebne są dodatkowe typy MIME z funkcją remote_upload

testowane @http:/www.damienkeitel.com

+2

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

+0

Dzięki dla mod, to więcej niż mogłem mieć nadzieję. Próbowałem go, ale mam problem, otrzymuję => Podany adres URL jest nieprawidłowy. podczas próby przesłania. Wiem, że ten URL jest w porządku. –

+0

Czy masz już rozszerzenia i dozwolone rozszerzenia? grupa rozszerzeń postu/mange, a następnie kliknij dowolne z kół zębatych, aby umożliwić korzystanie z różnych typów plików/rozszerzeń –