1

为了获得更好的文件上传体验,我伪造了一个 ajax 请求,即用户单击提交,表单消失,出现加载图形,并且在查看几秒钟后,页面刷新以显示他们的 newley 上传图像。

但是,由于在我的文件上传中添加 jquery 总是返回相同的错误,

您没有选择要上传的文件。为什么是这样?这是我的表格

<div id="picture_upload">
        <div class="loading"></div>
        <?php echo form_open_multipart('my_profile/do_upload'); ?>

        <strong>Choose pictures to upload</strong>
        <p>Max file size: 1MB .jpeg, .gif, .png or .bmp</p>
        <input type="file" name="userfile" />
    </div>
    <!--<div id="webcam_upload">
        <p>Hello</p>
    </div>-->
</div>
<div id="bottom"><table><tr><td><input type="submit" id="submit_upload" value="Upload a picture" class="button green rounded_5 small" /></td><td>or</td><td><a href="#" id="close_modal" />Cancel</a></td></tr></table></div>

还有我的js,

$("#submit_upload").click(function(e){
    //alert("here");
    setTimeout(function() { $("#picture_upload form").submit();}, 6000);
    $("#picture_upload").children().hide();
    $(".loading").show();
    setTimeout( function() {  location=$("#picture_upload form").attr('action') }, 1500 );
    return false;
});

上传功能只是您从 codeigniter 获得的基本上传功能。

4

3 回答 3

3

出于安全原因,您不能使用 XmlHttpRequest 对象 (AJAX) 上传文件。

替代解决方案是:

  • 在 iframe 中加载您的文件提交表单并使用 JS 发布
  • 使用 Flash 文件上传器
  • 使用 HTML5

这是一个看起来很流行的 jQuery 插件:http ://www.uploadify.com/

于 2012-05-31T12:39:13.927 回答
1

像这样试试

$("#submit_upload").click(function(e){
    //alert("here");
    setTimeout(function() { $("#picture_upload form").submit();}, 6000);
    $("#picture_upload").children().hide();
    $(".loading").show();
    return false;
});

然后使用 php 重定向/重新加载页面

header('Location: URL_TO_REDIRECT'); //put it in your end of upload script in php file

如果您不想从 PHP 重定向,则可以使用

于 2012-05-31T12:48:41.893 回答
0

如果您想学习如何使用 jQuery 构建自己的上传,这里有一篇很好的文章 - http://www.peachpit.com/articles/article.aspx?p=1766159

于 2012-05-31T13:15:16.943 回答