2015-10-13 2 views
-2

У меня есть программа C, запущенная на сервере localhost, которая создает некоторые файлы (записывает свой вывод в эти файлы). Затем я заархивировал все эти файлы, используя php. Теперь я хочу загрузить zip-файл, созданный на сервер mysql, используя некоторый php-скрипт, но i не хочет, чтобы пользователь загружал эти файлы с помощью формы, нажав кнопку выбора файла, но я хотел бы загрузить их автоматически, как только они будут сгенерированы mysql, используя php-скрипт.Загрузить файлы без использования php, но без формы php

<?php 
//get content of json file 
require_once("zip.php"); 
$str = file_get_contents("program/heatmap_parameters.json"); 
//decode the JSON 
$json = json_decode($str,true); 
//echo '<pre>' . print_r($json, true) . '</pre>'; 
foreach ($json['parameters'] as $params) { 
    echo $params[3]."<br>"; 
    $files_to_zip = array("program/".$params[3]); 
    var_dump($files_to_zip)."<br>"; 
    //$files_to_zip = array("program/cctv2.mp4.json"); 
//if true, good; if false, zip creation failed 
    $zip_name = "program/".$params[3].".zip"; 
    //zip the files 
    $result = create_zip($files_to_zip,$zip_name); 

} 
//connect to database 
require_once("database/conn.php"); 
//upload zip file to database without displaying any form.  

?> 

Мне нужен способ, чтобы загрузить мой сгенерированный файл сохранен в MySQL, не выбирая его из формы.

<form action="" method="post" enctype="multipart/form-data"> 
    <table width="350" border="0" cellpadding="1" cellspacing="1" class="box"> 
    <tr> 
    <td width="246"> 
    <input type="hidden" name="MAX_FILE_SIZE" value="2000000"> 
    <input name="userfile" type="file" id="userfile"> 
    </td> 
    <td width="80"><input name="upload" type="submit" class="box" id="upload" value=" Upload "></td> 
    </tr> 
    </table> 
    </form> 

<?php 
if(isset($_POST['upload']) && $_FILES['userfile']['size'] > 0) 
{ 
    $fileName = $_FILES['userfile']['name']; 
    $tmpName = $_FILES['userfile']['tmp_name']; 

    $fp  = fopen($tmpName, 'r'); 
    $content = fread($fp, filesize($tmpName)); 
    $content = addslashes($content); 
    fclose($fp); 

    include '../database/conn.php'; 

    $sql = "INSERT INTO upload (name, content) ". 
    "VALUES ('$fileName', '$content')"; 

    $query = mysqli_query($conn,$sql); 
    if(!$query){ 
     die("Cannot Insert".mysql_error()); 
       } 

} 

Как я могу сделать этот код таким образом, что он не нуждается в форме

+1

Я думаю, вы ошиблись в своей формулировке. On Итак, вы запрашиваете требуемый код (не работает). Затем мы можем проверить его и помочь вам исправить. Мы не будем писать код для вас! –

+0

@LelioFaieta Мне не нужна ваша помощь, чтобы исправить код, пока он работает, и я не прошу записать код 1000 строк для меня. Мне просто нужна ваша помощь в решении последней проблемы. –

+0

Я считаю, что после 'create_zip()' у вас есть файл. Я прав? – ROAL

ответ

0

Чтобы ответить на ваш вопрос в oneline,

Вы не можете загрузить файл без файла формы/типа входа элемент, потому что это будет большая дыра в Интернете.

Чтобы загрузить любой файл на сервер, серверу нужен файл, у которого есть вся информация о файле. эта информация будет предоставлена ​​клиентом, откуда вы загружаете файл. Он также будет иметь расположение tmp файла, где сервер будет принимать этот файл.

Вы можете скопировать файл с одного сервера на другой, используя завиток или вы можете написать Баш скрипт, который будет копировать файлы из одного места в другое и вы можете запустить этот Баш скрипт с помощью PHP.

Надеюсь, это поможет вам!

+0

Спасибо. Я попробую это, но если php-скрипт находится на моем собственном сервере localhost, файлы, которые будут загружены, также находятся на моем собственном локальном хосте, то почему этот скрипт не может получить доступ к моим файлам и почему требуется кнопка отправки. –

+0

LIke Я объясню в ответ, когда вы загружаете любой файл, он принимает информацию о файле только от клиента, эта информация содержит заголовки, а главное - начало файла. Кнопка отправки не нужна, так как вы можете отправить форму, используя javascript. Когда вы выбираете файл с помощью кнопки обзора, в переменной php $ _FILE получает весь информационный файл и только таким образом он загружается. В вашем случае вы пытаетесь добиться копирования файла из одного места в другое. Следовательно, есть способы сделать это в PHP, но это не загрузка. –