вставьте имя файла в проблемы с базой данных - PullRequest
0 голосов
/ 17 сентября 2011

У меня проблемы с попыткой сохранить имя загруженного файла с помощью Plupload. Вот раздел Plupload:

echo<<<_END
  <div id="container">
    <div id="filelist">No runtime found.</div>
    <br />
    <a id="pickfiles" href="javascript:;">[Select file]</a> 
    <a id="uploadfiles" href="javascript:;">[Upload it]</a>
  </div>

  <script type="text/javascript"> 
  // Custom example logic
    function $(id) {
      return document.getElementById(id);
    }

  var uploader = new plupload.Uploader({
    runtimes : 'gears,html5,flash,silverlight,browserplus',browse_button : 'pickfiles',container: 'container',max_file_size : '1mb',
    url : 'upload.php',
    resize : {width : 320, height : 240, quality : 90},
    flash_swf_url : 'plupload/js/plupload.flash.swf',
    silverlight_xap_url : 'plupload/js/plupload.silverlight.xap',
    filters : [{title : "Image files", extensions : "jpg,jpeg,gif,png"}]
  });

  uploader.bind('Init', function(up, params) {
    $('filelist').innerHTML = "<div>Current runtime: " + params.runtime + "</div>"; 
  });

  uploader.bind('FilesAdded', function(up, files) {
    for (var i in files) {
      $('filelist').innerHTML += '<div id="' + files[i].id + '">' + files[i].name     + ' (' + plupload.formatSize(files[i].size) + ') <b></b></div>';
    }});

  uploader.bind('UploadProgress', function(up, file) {
    $(file.id).getElementsByTagName('b')[0].innerHTML = '<span>' + file.percent + "%    </span>";
  });

  $('uploadfiles').onclick = function() {
    uploader.start();
    return false;
  };

  uploader.init();
</script>
_END;

Но я понятия не имею, как вставить имя файла в мою базу данных:

$post_img = file??

$topicid = mysql_insert_id();
$sql = "INSERT INTO
    posts(post_content,
    post_date,
    post_topic,
    post_by,
    post_img
  )
  VALUES
  (
    '" . mysql_real_escape_string($_POST['post_content']) . "',
    NOW(),
    " . $topicid . ",
    " . $_SESSION['userid'] . ",
    " . $post_img . " )";
  $result = mysql_query($sql);

  if(!$result) {
    //something went wrong, display the error
    echo 'An error occured while inserting your post. Please try again later.<br /><br />' . mysql_error();
    $sql = "ROLLBACK;";
    $result = mysql_query($sql);
  }

Я получаю ошибку 'Произошла ошибка при вставке вашего сообщения. Пожалуйста, попробуйте позже '

Ответы [ 2 ]

2 голосов
/ 24 февраля 2013

Я поместил запрос mysql в файл upload.php.Я не совсем уверен, где в этом файле его поместить, но я предполагаю, что это в части «Проверить, был ли загружен файл», в конце файла upload.php.

if (!$chunks || $chunk == $chunks - 1) {

// Strip the temp .part suffix off 
rename("{$filePath}.part", $filePath);

    //your mysql query here**************************
}

причина, по которой я думаю, что это может быть здесь, заключается в том, что он проверяет, остались ли фрагменты из загруженного файла.Если его не осталось, вы находитесь внутри оператора if.upload.php запускает foreach для каждого загруженного файла, поэтому вы просто помещаете $fileName в базу данных.

Это работает для меня.Надеюсь, это поможет

0 голосов
/ 16 июля 2013

muchos gracias Майк. Это помогло мне

if (! $ Chunks || $ chunk == $ chunks - 1) {

работает лучше, чем

если ($ ломоть == 1) {

...