ajax имя файла отправляется в двоичном виде - PullRequest
0 голосов
/ 09 марта 2020

У меня есть простая форма, которая принимает несколько входных данных, а также файл,

HTML

<form class="mainfrom" id="mainfrom" method="POST" enctype="multipart/form-data">
    <div class="alert alert-info alert-dismissible infomsg" style="display:none">
        <button type="button" class="close" data-dismiss="alert">&times;</button>
        <strong>Please Wait..!</strong>
    </div>
    <div class="alert alert-danger alert-dismissible error_show" style="display:none">
        <button type="button" class="close" data-dismiss="alert">&times;</button>
        <strong class="error_msg"></strong>
    </div>
    <div class="row">
        <input type="hidden" name="action" id="action" value="quoteform">
        <div class="col-sm-6 form-group">
            <label> <span tooltip="Upload the file for which you require our services." flow="right">
                            Upload File <span class="question">?</span> </span>
            </label>
            <input type="file" id="myFile" class="form-control" name="filename1">
            <span id="myFileErr" class="error"></span>
        </div>
        <div class="col-sm-12 form-group">
            <div class="row">
                <div class="col-sm-6">
                    <input type="button" class="btn btn-primary float-right mt-1" value="Submit" name="submitquote"
                           id="submitquote">
                </div>
            </div>
        </div>
    </div>
</form>

Мой ajax код выглядит следующим образом

var fd = new FormData($('#mainfrom')[0]);
$.ajax({
    url: 'include/common.php',
    type: 'POST',
    dataType: 'JSON',
    data: fd,
    cache: false,
    contentType: false,
    processData: false,
})
.done(function (res) {
    if (res.status) {
        blah
        blah
    }
);

Oh php сторона Я получаю файл как $tmpName = $_FILES['filename1']['tmp_name'];

Однако в chrome, когда я вижу данные в форме, он говорит имя файла1: (двоичный), Мне нужно имя файла здесь *, из-за которого я думаю, что я не могу получить имя файла в php, следовательно, мой ajax не удается, Как мне решить эту проблему?

общий. php

$tmpName = $_FILES['filename1']['tmp_name'];
$fileName = $_FILES['filename1']['name'];

if (file_exists($tmpName) == true) {
    $curtime = time();
    $fileName = $_FILES['filename1']['name'];
    $fileExt = pathinfo($fileName, PATHINFO_EXTENSION);
    $fileName = $curtime . '-' . rand('11111', '99999') . '.' . $fileExt;
    $folder = 'uploads/';

    if (move_uploaded_file($tmpName, $folder . '' . $fileName) == true) {

1 Ответ

0 голосов
/ 09 марта 2020

вы получите имя файла по $ _FILES ['filename1'] ['name']

загруженный файл обычно содержит

  • name: "a.png" => имя файла здесь
  • type: "image / png" => расширение файла
  • tmp_name: "/ tmp / phpolpEjn" => где файл загружен на сервер
  • ошибка: 0 => загрузить флаг ошибки
  • размер: 149974 => размер файла

, поэтому, если вы хотите проверить, существует ли файл, вы делаете это:

if (file_exists($_FILES['filename1']['tmp_name']))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...