为WP创建一个maxi-Javascript文件上传器

时间:2018-09-23 10:11:20

标签: javascript php jquery wordpress vue.js

我来自面向对象的PHP和Laravel,现在我正在为Wordpress构建(我的第一个)插件。该插件已经具有基本的上传功能,该功能允许用户从磁盘上上传多个文件(照片),并从中创建wp-post(种类:附件),并附加一些其他信息:

  $files = $_FILES["my_file_upload"];

      foreach ($files['name'] as $key => $value) {
          if ($files['name'][$key]) {
              $file = array(
                  'name' => $files['name'][$key],
                  'type' => $files['type'][$key],
                  'tmp_name' => $files['tmp_name'][$key],
                  'error' => $files['error'][$key],
                  'size' => $files['size'][$key]
              );
              $_FILES = array("upload_file" => $file);
              $attachment_id = media_handle_upload("upload_file", 0);

              if (is_wp_error($attachment_id)) {
                  // There was an error uploading the image.
                  echo "Error adding file";

              } else {

                // The image was uploaded successfully!
                      //Take the album id from the URL
                      if ($_GET['album_id'] != ''){

                          wp_update_post(
                          array(
                              'ID' => $attachment_id,
                              'post_parent' => $_GET['album_id']
                                  )
                              );
                          echo 'id album'.$_GET['album_id'];
                        }

一切正常。问题是,如果用户上传到许多文件,则当然有可能内存不足。

我想做什么:

我想制作一个脚本(在Vue上很好,但我也可以在jQuery或纯js中做到),在用户选择了要上传的所有文件之后,就制作了一个脚本文件,然后通过AJAX请求,它每次(每个请求)每次添加一个文件,当然向用户显示添加x ---的文件1,依此类推。 我已经(上周)在Wp中使用AJAX了,一开始有点痛苦(我完全不知道WP中的所有ajax请求都必须通过本地WP AJAX处理程序传递),但我进行了整理。

我认为应该从以下内容开始:

   var x = document.getElementById("my_file_upload");
if ('files' in x) {
    if (x.files.length == 0) {
        txt = "No file selected";
    } else {
        for (var i = 0; i < x.files.length; i++) {


  // make an ajax request here for the first file,
   // then when get the answer, take away the first file from the array and do 
//the same to the second and so on... 

如前所述,我在php中很好,但是对WP中的代码来说还很陌生,所以我问是否有人做了类似的事情并且有什么建议可以节省时间。

0 个答案:

没有答案