整合營銷服務商

          電腦端+手機端+微信端=數(shù)據(jù)同步管理

          免費咨詢熱線:

          html5移動端實現(xiàn)上傳多個本地圖片實例

          文主要講解移動端頁面上能上傳多個本地圖片的例子,在一些發(fā)布說說的頁面上能用得到,有興趣的小伙伴可以一起看看!

          效果圖:

          html:

          css:

          css樣式方面就不多說了,自己可以美化自己的布局,重點還是js中的實現(xiàn)代碼:如下

          JavaScript中,您可以使用HTML5的<input type="file">元素來實現(xiàn)圖片上傳功能。

          以下是一個簡單的示例代碼,演示如何在JavaScript中上傳圖片:

          HTML部分:

          <input type="file" id="uploadInput">
          <button onclick="uploadImage()">上傳圖片</button>
          

          JavaScript部分:

          function uploadImage() {
            var fileInput = document.getElementById('uploadInput');
            var file = fileInput.files[0];
          
            if (file) {
              var formData = new FormData();
              formData.append('image', file);
          
              // 發(fā)送圖片數(shù)據(jù)到服務器
              // 這里可以使用XMLHttpRequest或fetch等方法發(fā)送請求
              // 請根據(jù)您的需求選擇適當?shù)姆椒?    // 示例中使用XMLHttpRequest發(fā)送POST請求
              var xhr = new XMLHttpRequest();
              xhr.open('POST', '/upload', true);
              xhr.onload = function() {
                if (xhr.status === 200) {
                  // 上傳成功
                  console.log('圖片上傳成功');
                } else {
                  // 上傳失敗
                  console.log('圖片上傳失敗');
                }
              };
              xhr.send(formData);
            }
          }
          

          API部分:

          [HttpPost]
          [RequestSizeLimit(5242880)]
           public async Task<APIResult> upload(IFormCollection collection)
           {
          
                      APIResult rtn = new APIResult();
          
                      if (collection == null)
                      {
                          rtn.code = -100;
                          rtn.msg = "圖片列表為空";
                          return rtn;
                      }
                      else
                      {
                          try
                          {
                              string file_path = "";
                              // 預處理 用戶參數(shù):用戶指定子路徑                   
                              string userPath = DateTime.Now.ToString("yyyy-MM-dd");
                              if (collection.ContainsKey("path"))
                              {
                                  collection.TryGetValue("path", out Microsoft.Extensions.Primitives.StringValues val);
                                  if (!val.Equals("undefined"))
                                  {
                                      userPath = val.ToString();
                                  }
                              }
          
                              // 預處理 文件路徑
                              // 注意:這里可能會根據(jù)不同的環(huán)境來 修改 路徑前面是否需要添加 /
                              // 當發(fā)現(xiàn)上傳不成功,目錄無法創(chuàng)建時,可以嘗試修改這里
                              file_path = $"upload/imgs/{userPath}/";
                              var uploadPath = Path.Combine(_webHostEnvironment.WebRootPath, file_path);
                              if (!Directory.Exists(uploadPath))
                              {
                                  Directory.CreateDirectory(uploadPath);
                              }
          
                              // 處理文件
                              FormFileCollection filelist = (FormFileCollection)collection.Files;
                              foreach (IFormFile file in filelist)
                              {
                                  // 保存文件到磁盤
                                  string name = file.FileName;
                                  string FilePath = Path.Combine(uploadPath, name);
                                  string type = Path.GetExtension(name);
                                  using (var stream = System.IO.File.Create(FilePath))
                                  {
                                      await file.CopyToAsync(stream);
                                  };
          
                                  // 保存文件信息到表
                                  Sys_File f = new Sys_File();
                                  f.code = "image";
                                  f.name = name;
                                  f.file_type = type.Trim('.');
                                  f.file_group = userPath;
                                  f.file_path = $"/{file_path}{name}";
                                  f.is_active = true;
                                  f.memo = "";
                                  f.createTime = DateTime.Now;
                                  using (var dbctx = DBHelper.db)
                                  {
                                      await dbctx.AddAsync(f);
                                      await dbctx.SaveChangesAsync();
                                  };
                                  // 返回消息,包含文件路徑
                                  rtn.datas = $"/{file_path}{name}";
                                  rtn.code = 100;
                                  rtn.msg = "文件已保存!";
                              }
                          }
                          catch (Exception ex)
                          {
                              rtn.code = -200;
                              rtn.msg = "圖片保存失敗!";
                              Log4NetUnit.Instance.Log.Error("圖片保存失敗:" + ex.Message);
                          }
                          return rtn;
                      }
                  }


          在這個示例中,我們首先在HTML中創(chuàng)建了一個<input type="file">元素,用于選擇要上傳的圖片。

          然后,我們在JavaScript中編寫了一個uploadImage函數(shù),該函數(shù)在點擊"上傳圖片"按鈕時觸發(fā)。

          uploadImage函數(shù)中,我們首先獲取到<input>元素,并從中獲取到用戶選擇的圖片文件。

          然后,我們創(chuàng)建一個FormData對象,并將圖片文件添加到其中。

          接下來,我們可以使用XMLHttpRequest或fetch等方法將圖片數(shù)據(jù)發(fā)送到服務器。

          在示例中,我們使用XMLHttpRequest發(fā)送了一個POST請求,將圖片數(shù)據(jù)作為FormData發(fā)送到/upload端點。

          您需要根據(jù)您的實際情況修改URL和請求方法。

          當請求完成時,我們可以根據(jù)響應的狀態(tài)碼來判斷上傳是否成功。

          在示例中,如果狀態(tài)碼為200,則表示上傳成功,否則表示上傳失敗。

          請注意,由于安全性限制,JavaScript無法直接訪問用戶的文件系統(tǒng)。

          因此,用戶必須手動選擇要上傳的文件。

          文本插件TINYMCE使用CTRL+V粘貼圖片上傳到遠程服務器

          最近項目中有一個需求,需要在編輯器增加Word內容一鍵粘貼的功能,粘貼后能夠自動將Word中的圖片上傳到服務器中,并且保留Word文檔中的文本樣式,比如顏色,字體,字體大小,表格等。粘貼操作要求支持快捷鍵操作(Ctrl + V),Web編輯器使用的TinyMCE5

          用戶每天需要發(fā)布新聞,新聞都是由編輯寫好,保存在Word文檔中,之前發(fā)的時候圖片處理比較麻煩,都是一張張上傳,效率比較低,現(xiàn)在希望能夠批量自動上傳,提高工作效率。

          希望在現(xiàn)有的后臺管理系統(tǒng)中直接集成到現(xiàn)有的編輯器(tinymce)中,做成一個按鈕,用戶點擊按鈕后就能粘貼,圖片自動上傳。操作盡量簡單,用戶體驗盡量的好用。

          ?

          網(wǎng)上搜了一下,基本上大部分文章講的都是用VUE+HTML5來實現(xiàn)的。我們實際測試后發(fā)現(xiàn)這種方案局限性比較大,而且兼容性也不夠好,在有些電腦上不行,有些客戶電腦又行,暫時找不到原因,開源方案也沒人聯(lián)系,沒有任何技術支持,所以放棄。圖片是轉成了BASE64上傳,與原始圖片相比尺寸更大些,應該是自動轉換時出了問題,清晰度也有下降。

          ?

          找了幾個星期最終只找到了一個最符合需求的插件:澤優(yōu)Word一鍵粘貼控件(WordPaster),實際測試后發(fā)現(xiàn)效果還不錯基本能夠滿足需求。提供了完整的示例代碼,整合教程和視頻教程,集成起來也非常的方便,用戶體驗做的也很好。

          ?

          項目組建議最好能夠以插件方式進行使用,這樣集成升級后期維護更方便,前端沒有使用VUE框架,而是HTML+JS。用戶希望直接集成到編輯器(UEditor)中,在工具欄中提供一個按鈕,點擊按鈕后就能粘貼,圖片自動上傳。這樣的用戶體驗是最好的

          ?

          另外一點就是希望穩(wěn)定可靠,因為用的人比較多,幾乎每天都會使用,使用頻繁也很高,出了問題就比較影響工作效率。客戶那邊要求提供手機和微信需要技術支持。

          ?

          上面的幾點能夠滿足的話基本就沒有什么問題,領導希望最好提供OEM或者買斷的采購方式,因為我們是軟件公司,也是專門做政府單位項目,客戶比較多,領導希望能夠買斷集成在我們自己的產(chǎn)品中,這樣就能夠為所有用戶提供這個功能,用戶體驗也能夠統(tǒng)一。主要是領導不想每次都要單獨采購,太麻煩了。

          ?

          示例下載:


          主站蜘蛛池模板: 国产亚洲一区二区三区在线不卡| 射精专区一区二区朝鲜| 亚洲乱码国产一区三区| 91精品乱码一区二区三区| 日韩一区二区三区四区不卡| 国产福利一区视频| 亚洲V无码一区二区三区四区观看 亚洲爆乳精品无码一区二区三区 亚洲爆乳无码一区二区三区 | 熟女少妇丰满一区二区| 伦精品一区二区三区视频| 国产精品 视频一区 二区三区| 精品黑人一区二区三区| 国产亚洲一区二区在线观看| 无码精品久久一区二区三区 | 无码精品一区二区三区免费视频 | 免费看AV毛片一区二区三区| 国99精品无码一区二区三区| 成人区人妻精品一区二区不卡视频 | 中文字幕精品一区二区2021年| 中文字幕一区二区在线播放| 精品一区二区久久久久久久网精| 亚洲国产精品一区| 国产一区二区精品久久岳| 日本无码一区二区三区白峰美| 亚洲一区免费观看| 亚洲一区在线视频观看| 亚洲日本va午夜中文字幕一区| 国产韩国精品一区二区三区| 乱色熟女综合一区二区三区| 亚洲国产专区一区| 中文字幕久久亚洲一区| 亚洲av午夜福利精品一区人妖| 国产精品一区二区av| 国产精品熟女一区二区| 人妻体体内射精一区二区 | 视频一区二区精品的福利| 一区二区三区四区在线视频| 中文字幕一区二区三区在线播放 | 亚洲日韩国产一区二区三区在线 | 色噜噜狠狠一区二区| 精品无码国产AV一区二区三区| 国产精品视频无圣光一区|