English 中文(简体)
j 采用j Query s ajax方法(不含假肢)填写文件
原标题:jQuery upload file using jQuery s ajax method (without plugins)

此时,我想在不使用任何透镜的情况下执行图片上载。

我的上载形式就是这样。

<form action="/Member/UploadPicture" enctype="multipart/form-data" id="uploadform" method="post">
            <span>
                <div class="upload" id="imgUpl">
                    <h3>Upload profile picture</h3>
                    <div class="clear5"></div>
                    <input  type="file" name="file" id="file"  />
                    <button class="btn-bl"  id="upComplete"><span>Upload</span></button>
                </div>

            </span>
            </form>

我的格文法是:

  $( #upComplete ).click(function () {
            $( #up ).hide();
            $( #upRes ).show();

            var form = $("#uploadform");

            $.ajax({
                type: "POST",
                url: "/Member/UploadPicture",
                data: form.serialize(),
                success: function (data) {
                    alert(data);
                }
            });

            $.fancybox.close();
            return false;
        });

如果我开诚布公,我可以看到,亚克斯(Ajax())方法是简单的形式职位(而不是多部分),而POST的内容是空的。

能否用j Query ajax()方法上上载文件,或者我是否以任何其他方式这样做?

感谢 你们

最佳回答
问题回答

<代码>AJAX或更适当的XMLHttpRequest不支持文件上载。 有一些工作环绕,例如通过<代码><iframe>卸载,但繁琐。 你的时间将更好地用于建立你的申请,而不是重新发明这些解决办法。

但是,如果你重新思考如何在内部运作,那么就感到可以自由检查提供这种功能的某些原始产品的来源代码。 可在这一链接上找到非常简单的解释:。 http://www. openjs.com/articles/ajax/ajax_file_upload/

从根本上说,你修改了<代码>target,以在<iframe>内提交,从而避免网页复读,模拟自动备用金,而自动自动备用金确实是谁,但谁是谁,终端用户可以说话。

单体上载荷的起码例子可能就是这样:

​$("#upComplete").click(function() {
    // create a dynamic iframe, or use existing one 
    var iframe = $("<iframe id= f  name= f  src=  >");
    // attach a load event to handle response/ know about completion
    iframe.load(function() { alert( complete ); });
    iframe.appendTo( body );
    // change form s target to the iframe (this is what simulates ajax)
    $( #uploadForm ).attr( target ,  f );
    $( #uploadForm ).submit();
});​​​​​​

请注意,这并非处理任何应对措施,而只是向服务器发送照片。 为了处理答复,必须对iframe sload活动进行回击。

实际上,有一种办法,即用Ajax(xmlhttp)与Adrogt;3 和“ Chrome”上载文件,也可以在不使用表格和金字塔的情况下上载多份档案。 实际上,我正在做这项工作,很快我将发表。 这是一个简单的例子:

var file=$( <input type=file /> ).get(0).files[0];
function asyncupload(file)
{
    var xhr = new XMLHttpRequest();    
    xhr.onreadystatechange = function() 
    {  
        if (xhr.readyState == 4) 
        {  
            if ((xhr.status >= 200 && xhr.status <= 200) || xhr.status == 304) 
            {  
                //alert(xhr.responseText);
            }  
        }  
    };  
    xhr.upload.onload=function(e)
    {
        $( div#axprogress ).progressbar("option", "value", 100);;
    };  
    xhr.upload.onprogress=function(e) 
    {  
        if (e.lengthComputable) 
        {  
            var perc = Math.round((e.loaded * 100) / e.total);  
            $( div#axprogress ).progressbar("option", "value", perc);
        }  
    };  

    xhr.open("POST", "upload.php?filename="+file.name,true);  
    xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
    xhr.setRequestHeader("X-File-Name", encodeURIComponent(file.name));
    xhr.send(file);  
    return xhr;
}

若要把档案放在服务器上,例如把文件上载,就必须这样做。 php:

$input = fopen("php://input", "r");
$temp = tmpfile();
$realSize = stream_copy_to_stream($input, $temp);
fclose($input);

if ($realSize != $this->getSize())
    {            
    return false;
}

$target = fopen($_GET[ filename ], "w");        
fseek($temp, 0, SEEK_SET);
stream_copy_to_stream($temp, $target);
fclose($target); 

这是一个简单的想法,而不是完整的工作说明。 希望这一帮助。 欲了解更多信息,请参阅

   <input type="file" id="picfile" name="picf" />
       <input type="text" id="txtName" style="width: 144px;" />
  <input type="button" value=" ADD " id="btncatsave" style="width: 75px" />
 $("#btncatsave").click(function () {
var Name = $("#txtName").val();
var formData = new FormData();
var totalFiles = document.getElementById("picfile").files.length;

                    var file = document.getElementById("picfile").files[0];
                    formData.append("FileUpload", file);
                    formData.append("Name", Name);

$.ajax({
                    type: "POST",
                    url:  /Category_Subcategory/Save_Category ,
                    data: formData,
                    dataType:  json ,
                    contentType: false,
                    processData: false,
                    success: function (msg) {

                                 alert(msg);

                    },
                    error: function (error) {
                        alert("errror");
                    }
                });

});

 [HttpPost]
    public ActionResult Save_Category()
    {
      string Name=Request.Form[1]; 
      if (Request.Files.Count > 0)
        {
            HttpPostedFileBase file = Request.Files[0];
         }


    }




相关问题
ajax login using httpRequest?

I am trying to develop my login script to give feedback to the user if the login is valid or not. Basically if it isn t correct a div box will show saying its wrong, if its correct it will show its ...

Virtual Tour using sketch up, ajax, flash technologies

I want to know if there are existing technology that make your 3d models in sketch into virtual tours, using either Ajax or Flash for web presentation. If there s none, which will be a good approach ...

How can i update div continuously

I have asp.net application where i have a div which showing the value from other site. The value of that site is changing continuously. I want that my div will automatically update in some interval ...

热门标签