1

我已经查看了 stackoverflow 和一般互联网,但我找不到简单的 AJAX 文件上传器(只是表单提交)。我发现的那些不够灵活,不符合我的目的。如果我可以将此脚本调整为文件上传,那就太好了:

<script type="text/javascript">
 function upload(str)
 {
 if (str.length==0)
 { 
document.getElementById("txtHint").innerHTML="";
 return;
  }
 if (window.XMLHttpRequest)
    {// code for IE7+, Firefox, Chrome, Opera, Safari
   xmlhttp=new XMLHttpRequest();
   }
 else
   {// code for IE6, IE5
   xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
   }
 xmlhttp.onreadystatechange=function()
   {
   if (xmlhttp.readyState==4 && xmlhttp.status==200)
     {
     document.getElementById("hint").innerHTML=xmlhttp.responseText;
     }
   }
 xmlhttp.open("GET","ajax/link.php?q="+str,true);
 xmlhttp.send();
 }

在 HTML 中我会有

<input type='file' onblur='upload(this.value)'>

谢谢

4

3 回答 3

7

这是一个简单的ajax文件上传器

上传

如果你不想要闪光灯,你可以使用这个;

斧头上传器

于 2012-04-10T15:01:32.253 回答
0

那并没那么简单。您不能直接使用ajax 来上传文件。想想会导致的安全问题?如果我在您的 str 字段中输入“/%USER%/Desktop/CreditCardsAndPasswords.txt”怎么办?简而言之,您需要找到并使用您所说的那些“非灵活”上传器,并且必须根据您的需要对其进行编辑。要么这样,要么自己写一个来满足你的目的。

大多数“ajax”上传器的工作方式是动态创建 Html 输入文件元素,并将表单的子集(只是文件元素)提交到网站上的 php 脚本,然后将文件保存到任何临时目录。然后,当您提交表单的其余部分时,您可以“赶上”脚本的其余部分并处理上传文件所需的任何处理。

那里有许多 ajax '上传者'。只需搜索并找到一个,我无法相信所有这些都不够好。

于 2012-04-10T15:03:51.380 回答
0
var data = new FormData();
data.append("image_upload",jQuery("#file_upload_input")[0].files[0]);
jQuery.ajax({
    url: 'url',
    type: 'POST',
    data: data,
    cache: false,
    processData: false, // Don't process the files
    contentType: false, // Set content type to false as jQuery will tell the server its a query string request
    success: function(data, textStatus, jqXHR)
    {
        console.log(data, textStatus, jqXHR);
    },
    error: function(jqXHR, textStatus, errorThrown)
    {

        console.log(jqXHR, textStatus, errorThrown);

    }
});

请同时检查 post_max_size ini 变量,您将使用 echo phpinfo();

您必须设置要上传的最大文件大小。默认情况下,我认为它是 5mb。并检查增加发布数据大小所需的其他 ini 变量。

于 2017-09-29T15:39:08.567 回答