使用 FileReader 进行文件上传时出现问题:“DomException:处理操作时找不到请求的文件或目录

问题描述 投票:0回答:1

我在使用提供的代码片段使用 FileReader 上传文件时遇到问题。大多数时候,代码运行良好,没有任何问题。但是,对于某些用户来说,文件上传随机失败,并且我在控制台中观察到一条错误消息,显示“DOMException:处理操作时找不到请求的文件或目录。

注意:在调试模式下,我可以看到 fileinput 的文件值仍然进入 onError。文件本身没有问题,就像用户再次上传文件一样,它会被上传。

以下是相关代码片段:

//Upload the file.
function uploadFile() {
  // The display name must be unique every time you run the example.
  var fileInput = jQuery('#getFile');
  var newName = jQuery('#displayName').val();

  // Initiate method calls using jQuery promises.
  // Get the local file as an array buffer.
  var getFile = getFileBuffer();

  getFile.done(function (arrayBuffer) {
    // Add the file to the SharePoint folder.
    var addFile = addFileToFolder(arrayBuffer);
    alert('Upload Done');
  });

  getFile.fail(onError);

  // Get the local file as an array buffer.
  function getFileBuffer() {
    var deferred = jQuery.Deferred();
    var reader = new FileReader();
    reader.onloadend = function (e) {
      deferred.resolve(e.target.result);
    }
    reader.onerror = function (e) {
      //HERE ERROR IS COMING
      deferred.reject(e.target.error);
    }
    reader.readAsArrayBuffer(fileInput[0].files[0]);
    return deferred.promise();
  }

  // Add the file to the file collection using AJAX
  function addFileToFolder(arrayBuffer) {
    return jQuery.ajax({
      url: fileCollectionEndpoint,
      type: "POST",
      data: arrayBuffer,
      processData: false,
      headers: {
        "accept": "application/json;odata=verbose",
        "content-length": arrayBuffer.byteLength
      }
    });
  }
}

我已经检查了代码,但无法发现任何明显的问题。有人可以帮助我了解可能导致此错误的原因以及如何解决它吗?此外,任何改进代码的建议都值得赞赏。

javascript html dom filereader
1个回答
0
投票

您遇到的错误可能表明操作期望访问的文件或目录在处理操作时不可用,发生这种情况的原因有多种,包括:

  • 指定路径不存在该文件或目录。
  • 在操作可以访问该文件之前,该文件可能已被移动或删除。
  • 可能存在阻止访问文件或目录的权限问题。
  • 文件参考可能不正确或已过时。

现在,您可以尝试通过验证文件应上传到的路径并确保该文件应存放的目录存在来解决该问题。这可能不适用于您,但如果有适当的权限系统,请检查以确保应用程序具有将文件写入和上传到所述目录的必要权限。

© www.soinside.com 2019 - 2024. All rights reserved.