【问题标题】:Cordova file transfer DOMStringCordova 文件传输 DOMString
【发布时间】:2026-01-28 18:00:02
【问题描述】:

我正在使用带有 Ionic 应用程序的 Cordova 文件上传插件并将其发送到 Laravel 后端。它使用 JWT 身份验证,并且在发送请求时我必须沿参数转发令牌。

var options = new FileUploadOptions();
options.chunkedMode = false;
options.fileName = 'someFileName.jpg';
options.params = {token: localStorage.getItem('token')}

var ft = new FileTransfer();
alert(JSON.stringify(options))
ft.upload('$scope.picData', encodeURI(SERVER + 'user/post'), win, fail, options);

问题是(我认为)在 Cordova 文档中它说参数作为 DOMString 转发,因为我在 Laravel 方面得到了400 error token_not_provided...有什么想法吗?

【问题讨论】:

    标签: angularjs cordova ionic-framework


    【解决方案1】:

    您可能需要检查您的后端期望如何提供身份验证令牌,但在大多数情况下,它位于标头中,而不是作为参数。检查upload method documentation,尤其是second example -

    (虚拟代码)

    var options = new FileUploadOptions();
    options.chunkedMode = false;
    options.fileName = 'someFileName.jpg';
    options.headers = {
        "token": localStorage.getItem('token')
    };
    

    【讨论】:

    • 我也尝试过使用令牌。我将它作为参数与其他所有正常的 http 请求一起发布,但这个根本没有通过
    【解决方案2】:

    更改令牌并使用“授权”

    options.headers = {
    "Authorization" : localStorage.getItem('token')
    }
    

    这里是一个例子。

    var options = {
      fileKey: 'file',
      filename: filename,
      chunkedMode: false,
      mimeType: 'multipart/form-data',
      params: {
        'filename': filename
      },
      headers: {
        'Authorization': $rootScope.token //returns a string like 'JWT AmG...'
      }
    };
    

    【讨论】: