Создание имени файла для создания файла, кажется, не работает - PullRequest
0 голосов
/ 31 января 2020

При создании и публикации только данных заметок у меня проблем не было. Тем не менее, когда я пытаюсь позволить пользователю указать имя файла, код отказывается запускаться.

Есть ли другой способ решения этой проблемы или мой синтаксис выключен?

HTML:

<form method="post">                                                                                   
<div>                                                                                              
 <div style="margin-right 5px">                                                                    
    <input type="text" name="noteData" id="notes" size="250">                                      
    <input type="Submit" name="Submit" class="txtNote_But" value="Save Text 
 Note">                 
 </div>                                                                                            

        <input type="text" class="fileName" name="fileName" id="fileName" 
        size="35">               
        <input type="Submit" name="Submit2" class="filName_But" value="Save 
        File Name">            

 </div>                                                                                            
 </form>           

PHP WRITE:

$noteName = $_POST['fileName'];                                        
$noteData = $_POST['notes'];                                           

$notes = fopen('' + $noteName,"wb");                                   
fwrite($notes,$noteData);                                              
fclose($notes);                                                        

Ответы [ 2 ]

0 голосов
/ 31 января 2020

Попробуйте использовать file_put_contents() вместо fwrite()

Пример

// Create a unique prefix to prevent duplicate file names
$noteNamePrefix = $prefix = substr(str_shuffle("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"), 0, 1).substr(md5(time()),1);

$noteName = $_POST['fileName'];                                        
$noteData = $_POST['notes']; 

// Write File To Disk (Replace _PATH_TO_DIR With the destination path Eg /public_html/uploads/)
file_put_contents(_PATH_TO_DIR_.$noteNamePrefix.$noteName, $noteData);
0 голосов
/ 31 января 2020

Похоже, у вас есть две кнопки отправки на одной странице , что приводит к публикации только одного поля ввода.

  1. Перестройте форму следующим образом:

<form method="post">
  <div>
    <div style="margin-right:5px;">
      <input type="text" class="fileName" name="fileName" id="fileName" size="35" value="untitled">
      <input type="text" name="noteData" id="notes" size="250">
      <input type="Submit" name="Submit" value="Save">
    </div>
  </div>
</form>
Получите данные POST в вашем скрипте php:


    $noteName = $_POST['fileName'];                                        
    $noteData = $_POST['notes'];                                           

    $notes = fopen('' + $noteName,"wb");                                   
    fwrite($notes,$noteData);                                              
    fclose($notes);

Кстати, использование тега textarea будет более подходящим для ввода заметки:

<form method="post">
  <div>
    <div style="margin-right:5px;">
      <input type="text" class="fileName" name="fileName" id="fileName" size="35" value="untitled"><br>
      <textarea type="text" name="noteData" id="notes"></textarea><br>
      <input type="Submit" name="Submit" value="Save">
    </div>
  </div>
</form>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...