2013-05-14 78 views
8

我希望能够通过phpbb将远程文件上传到我的服务器,而无需先将文件下载到我的PC。这怎么能实现?phpBB远程文件上传

我有一些简单的代码,我已经测试,它做的工作,但我可以把它放在哪里,我需要在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); 
} 
?> 

或者是有可能打入远程化身功能中的phpBB(即包括/ functions_upload.php - >功能remote_upload($ UPLOAD_URL))? 我当然需要通过通常的phpBB函数发送远程文件,将其插入到数据库和所有数据库中。

+0

? – Abadis 2013-05-19 07:23:27

+0

最新版本 - 3.0.11 – 2013-05-19 11:24:29

+1

创建** includes/functions_upload.php **的备份,然后打开原件,在必要时放置代码,然后按照PHPBB上传文件的过程(插入到db,检查恶意文件)并试用。 – 2013-05-19 22:22:27

回答

4

打开文件包括/ message_parser.php

找到行1373

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

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

打开文件替换包括/ functions_posting.php

找到线414

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

更换

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

开放风格/ your_style /模板/ posting_attach_body.html

找到

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

添加后

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

乐牛逼我知道如果你要我创建一个国防部您与AutoMod的安装,或者如果你需要额外的MIME类型与remote_upload功能,您使用的版本测试@http:/www.damienkeitel.com

+2

Automod在这里安装 - > https://www.phpbb.com/community/viewtopic.php?f=70&t=2184331&p=13312954 – 2013-05-24 07:13:46

+0

谢谢对于国防部来说,这比我希望的要多。我已经尝试过,但遇到问题,我得到了=>您指定的网址无效。当试图上传时。我知道这个网址是好的。 – 2013-05-24 07:49:47

+0

你有没有进入扩展并允许扩展?发布/管理扩展组,然后点击任意一个齿轮来启用不同的文件类型/扩展 – 2013-05-24 08:56:35