簡體   English   中英

PHP上傳文件與JavaScript

[英]Php Upload File With JavaScript

我嘗試使用javascript上傳,我發送了ajax但是我找不到問題,我的代碼不起作用,哪里出了問題?

index.php

<input type="file" id="photoUploadFile"/>

腳本js

var full_photo_name = document.getElementById('photoUploadFile').value;
var photo_name = full_photo_name.substr(full_photo_name.lastIndexOf("\\")+1, full_photo_name.length);
$.ajax({
    type: "POST",
    url: "register_photo.php",
    data: { photo_name : photo_name },
    success: function(data) {
        }
    });

register_photo.php

upload_photo($_POST['photo_name']); // i upload with this function but show me error: Sorry!

function upload_photo($file_name) {
        global $Root_Directory;

        $target_dir = $Root_Directory. 'uploads/';
        $target_file = $target_dir. $file_name;
        $uploadOk = 1;

        if ($uploadOk == 0) {
            echo "Sorry, your file was not uploaded.";
        } else {
            if (move_uploaded_file($file_name, $target_file)) {
                echo 'File: '. $file_name. ' has been uploaded.';
            } else {
                echo 'Sorry !';
            }
        }
    }

這樣改變你的ajax

var formdata = new FormData();    
formdata.append( 'file', input.files[0] );

$.ajax({
  url: 'register_photo.php',
  data: formdata,
  processData: false,
  contentType: false,
  type: 'POST',
  success: function(data){
    alert(data);
  }
});

在register_photo.php中,使用move_uploaded_file保存

在您的ajax請求中,您可以使用類似這樣的東西。

 var file_data = $('#photoUploadFile').prop('files')[0];   
    var form_data = new FormData();                  
    form_data.append('file_name', file_data);
    $.ajax({
        url: "register_photo.php",
        cache: false,
        data: form_data,                         
        type: 'post',
        success: function(result){
            alert(result);
        }
    });

在您的PHP代碼中

upload_photo($_FILES['file_name']); // i upload with this function but show me error: Sorry!

function upload_photo($file_name) {
        global $Root_Directory;

        $target_dir = $Root_Directory. 'uploads/';
        $target_file = $target_dir. $file_name;
        $uploadOk = 1;

        if ($uploadOk == 0) {
            echo "Sorry, your file was not uploaded.";
        } else {
            if (move_uploaded_file($file_name['tmp_name'], $target_file)) {
                echo 'File: '. $file_name. ' has been uploaded.';
            } else {
                echo 'Sorry !';
            }
        }
    }

發送文件的最佳方法是使用表單提交文件,然后在服務器上接收文件,然后使用php或您使用的任何語言處理文件。

您必須了解客戶端和服務器是兩個不同的實體,並且以ajax發送文件名將無濟於事。

將輸入元素放入表單。

   <form id="frmsendfile" method="post" target="fileprocess.php">
    <input type="file" id="photoUploadFile"/>
   </form>

現在,我們編寫了一個javascript函數,將在您瀏覽文件后將表單提交到您的服務器。 您可以添加驗證。 我將為您提供一個方法。

  <script type="text/javascript">
   var submitFile = function(){
    var frm = document.forms[0];
    if(frm)
      {
       frm.submit();
      }
   };

您需要調用SubmitFile()函數來發送文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM