2012-03-15 2 views
0

У меня проблемы с загрузкой. Всякий раз, когда я использую строку в $ post_id, uploaded загружает только один файл, когда я выбрал 3 файла для загрузки. Но когда я указываю несуществующее значение для $ post_id, например, переменную сеанса, которая не существует $ _SESSION ['something']. Он вставляет все три файла в базу данных. Я думаю, что это может быть ошибка в структуре данных $ post_id.php - загрузка файлов с помощью uploadify

if(!empty($_FILES)){ 
      $post_id = 'aa'; 
      $name2 = mysql_real_escape_string($_FILES['Filedata']['name']); 
      $mime2 = mysql_real_escape_string($_FILES['Filedata']['type']); 
      $data2 = mysql_real_escape_string(file_get_contents($_FILES['Filedata']['tmp_name'])); 
      $size2 = intval($_FILES['Filedata']['size']); 



      $db->query("INSERT INTO tbl_files SET post_id='$post_id', filename='$name2', file_data='$data2', mime_type_id='$mime2'"); 



    } 

Я попытался повторить остальную часть данных, и кажется, что они только хранят простые строки. Таким образом, $ post_id строка должна работать,

echo $_FILES['Filedata']['name']; 
+0

$ post_id является PRIMARY KEY правой, так и вставить остальные только поля не $ post_id –

+0

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

+0

Что такое $ post_id? Получаете ли вы post_id из функции функции «Добавить функцию» – nithi

ответ

1

Попробуйте это, он должен работать, как вы ожидали

$tblQry = 'INSERT INTO tbl_files '; 
$tblQry .= 'SET   
     post_id     = "' .$_SESSION['post_id'] . '", 
     filename    = "' .$name2. '", 
     file_data    = "' .$data2.'", 
     mime_type_id   = "' .$mime2.'"'; 
    $db->query($tblQry); 
+0

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

+0

use session_start(); в верхней части этого файла –

+0

Спасибо за вашу помощь, но он все равно не сработает. –

1

Если вы используете сессии, пожалуйста, убедитесь, что вы начали сессию т.е. session_start()

Если вы хотите передать post_id из Uploadify функции PHP файл, вы можете использовать scriptData, который указан в следующей функции.

<script type="text/javascript" src="jquery.js"></script> 
<script type="text/javascript"> 
    $(document).ready(function(){ 
    //uploadify function 
    $("#file_upload").uploadify({ 
     'uploader': 'uploadify.swf', 
     'script': 'uploadify.php', 
     'cancelImg': 'cancel.png', 
     'folder': 'photos', //folder where images to be uploaded 
     'auto': false, // use for auto upload 
     'multi': true, 
     'queueSizeLimit': 6, 
     'buttonImg': 'images/upload.png', 
     'width': '106', 
     'height': '33', 
     'wmode': 'transparent', 
     'method': 'POST', 
     'scriptData': {'myid':post_id}, //you can post the id here 
     'onQueueFull': function(event, queueSizeLimit) { 
      alert("Please don't put anymore files in me! You can upload " + queueSizeLimit + " files at once"); 
      return false; 
     }, 
     'onComplete': function(event, ID, fileObj, response, data) { 
      $("#uploadfiles").append(response+","); 
     }, 
     'onAllComplete': function(response, data) { 
      showAll(); 
     } 
    }); 
</script> 

uploadify.php

if (!empty($_FILES)) { 
    $post_id = $_POST['myid']; 
    include_once "config.php"; 

    //use this when uploading images into a folder 
    $tempFile = $_FILES['Filedata']['tmp_name']; 

    $targetPath = $_SERVER['DOCUMENT_ROOT'] . $_REQUEST['folder'] . '/'; 

    $fna = $_FILES['Filedata']['name']; 
    $targetFile = str_replace('//','/',$targetPath) . $fna; 
    move_uploaded_file($tempFile,$targetFile); 
    //folder upload end 

      $name2 = mysql_real_escape_string($_FILES['Filedata']['name']); 
      $mime2 = mysql_real_escape_string($_FILES['Filedata']['type']); 
      $data2 = mysql_real_escape_string(file_get_contents($_FILES['Filedata']['tmp_name'])); 
      $size2 = intval($_FILES['Filedata']['size']); 



     $db->query("INSERT INTO tbl_files SET post_id='$post_id', filename='$name2', file_data='$data2', mime_type_id='$mime2'"); 

} 
+0

это может сработать, но я узнаю только то значение, которое я собираюсь опубликовать, после того как я отправил его в основную таблицу. Я использую последний вставленный id как значение. Это может работать, если я могу отправлять сообщения только тогда, когда я вызываю функцию uploadifyUpload(), потому что это единственный раз, когда у меня есть доступ к требуемому мне значению. –

0

Просто столкнулся с этой проблемой. Flash не использует файлы cookie, установленные в вашем браузере, поэтому вам необходимо передать идентификатор сеанса в сценарий flash в качестве переменной post, а затем установить значение cookie из значения post в сценарии upload.php. См:

jQuery and Uploadify session in the php file

Смежные вопросы