HarmonyOS 鸿蒙Next axios或者http怎么请求Formdata上传文件,地址是绝对路径,还有其他参数

发布于 1周前 作者 sinazl 来自 鸿蒙OS

HarmonyOS 鸿蒙Next axios或者http怎么请求Formdata上传文件,地址是绝对路径,还有其他参数

/data/storage/el2/base/haps/entry/files/202513_181717.jpg

formData.append(“fileSize”, fileSize);
formData.append(‘file’, filePath);

一直不对,绝对路径要怎么转intent


更多关于HarmonyOS 鸿蒙Next axios或者http怎么请求Formdata上传文件,地址是绝对路径,还有其他参数的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复
protected  postFiles(params: string = '',filesPathList:string [], httpUrl: string,callBack:Function) {
    if(filesPathList.length==0)
    {
      return;
    }
<span class="hljs-keyword">let</span> caCheFiles:netHttp.MultiFormData[] = [];
<span class="hljs-keyword">if</span>(filesPathList.length&gt;<span class="hljs-number">0</span>) {
  <span class="hljs-keyword">for</span> (<span class="hljs-keyword">let</span> i = <span class="hljs-number">0</span>; i &lt; filesPathList.length; i ++) {
    <span class="hljs-keyword">let</span> resFile = fileIo.openSync(filesPathList[i], fileIo.OpenMode.READ_ONLY)
    <span class="hljs-keyword">let</span> newPath = getContext(<span class="hljs-keyword">this</span>).cacheDir + <span class="hljs-string">"/"</span> + resFile.name;
    fileIo.copyFileSync(resFile.fd, newPath)
    <span class="hljs-keyword">let</span> formData = <span class="hljs-keyword">new</span> multiFormDataModel();
    formData.name = i.toString();
    formData.filePath = newPath;
    caCheFiles.push(formData);
  }
}

<span class="hljs-comment">// 每一个httpRequest对应一个HTTP请求任务,不可复用</span>
<span class="hljs-keyword">let</span> httpPostUrl = <span class="hljs-keyword">this</span>.appUrl + httpUrl;
<span class="hljs-keyword">let</span> httpRequest = http.createHttp();
<span class="hljs-comment">// 用于订阅HTTP响应头,此接口会比request请求先返回。可以根据业务需要订阅此消息</span>
<span class="hljs-comment">// 从API 8开始,使用on('headersReceive', Callback)替代on('headerReceive', AsyncCallback)。 8+</span>
httpRequest.on(<span class="hljs-string">'headersReceive'</span>, (header) =&gt; {
  console.info(<span class="hljs-string">'header: '</span> + <span class="hljs-built_in">JSON</span>.stringify(header));
});
httpRequest.request(
  <span class="hljs-comment">// 填写HTTP请求的URL地址,可以带参数也可以不带参数。URL地址需要开发者自定义。请求的参数可以在extraData中指定</span>
  httpPostUrl,
  {
    method: http.RequestMethod.POST, <span class="hljs-comment">// 可选,默认为http.RequestMethod.GET</span>
    <span class="hljs-comment">// 开发者根据自身业务需要添加header字段</span>
    header: {
      <span class="hljs-string">'Content-Type'</span>: <span class="hljs-string">'multipart/form-data'</span>
    },
    <span class="hljs-comment">// 当使用POST请求时此字段用于传递请求体内容,具体格式与服务端协商确定</span>
    extraData: params,
    expectDataType: http.HttpDataType.STRING, <span class="hljs-comment">// 可选,指定返回数据的类型</span>
    usingCache: <span class="hljs-literal">true</span>, <span class="hljs-comment">// 可选,默认为true</span>
    priority: <span class="hljs-number">1</span>, <span class="hljs-comment">// 可选,默认为1</span>
    connectTimeout: <span class="hljs-number">60000</span>, <span class="hljs-comment">// 可选,默认为60000ms</span>
    readTimeout: <span class="hljs-number">60000</span>, <span class="hljs-comment">// 可选,默认为60000ms</span>
    usingProtocol: http.HttpProtocol.HTTP1_1, <span class="hljs-comment">// 可选,协议类型默认值由系统自动指定</span>
    usingProxy: <span class="hljs-literal">false</span>, <span class="hljs-comment">// 可选,默认不使用网络代理,自API 10开始支持该属性</span>
    caPath: <span class="hljs-string">'/path/to/cacert.pem'</span>, <span class="hljs-comment">// 可选,默认使用系统预制证书,自API 10开始支持该属性</span>
    clientCert: {
      <span class="hljs-comment">// 可选,默认不使用客户端证书,自API 11开始支持该属性</span>
      certPath: <span class="hljs-string">'/path/to/client.pem'</span>, <span class="hljs-comment">// 默认不使用客户端证书,自API 11开始支持该属性</span>
      keyPath: <span class="hljs-string">'/path/to/client.key'</span>, <span class="hljs-comment">// 若证书包含Key信息,传入空字符串,自API 11开始支持该属性</span>
      certType: http.CertType.P12, <span class="hljs-comment">// 可选,默认使用PEM,自API 11开始支持该属性</span>
      keyPassword: <span class="hljs-string">"passwordToKey"</span> <span class="hljs-comment">// 可选,输入key文件的密码,自API 11开始支持该属性</span>
    },
    multiFormDataList:caCheFiles
    <span class="hljs-comment">// [// 可选,仅当Header中,'content-Type'为'multipart/form-data'时生效,自API 11开始支持该属性</span>
    <span class="hljs-comment">//  {</span>
    <span class="hljs-comment">//   name: "0", // 数据名,自API 11开始支持该属性</span>
    <span class="hljs-comment">//   contentType: 'multipart/form-data', // 数据类型,自API 11开始支持该属性</span>
    <span class="hljs-comment">//   // filePath:`internal://cache/${pic}`,</span>
    <span class="hljs-comment">//   filePath:'',</span>
    <span class="hljs-comment">//   remoteFileName: '' // 可选,自API 11开始支持该属性</span>
    <span class="hljs-comment">// }</span>
    <span class="hljs-comment">// ]</span>
  }, (err: BusinessError, data: http.HttpResponse) =&gt; {
  <span class="hljs-keyword">if</span> (!err) {
    httpRequest.destroy();
    callBack(data);
  } <span class="hljs-keyword">else</span> {
    console.error(<span class="hljs-string">'error:'</span> + <span class="hljs-built_in">JSON</span>.stringify(err));
    <span class="hljs-comment">// 取消订阅HTTP响应头事件</span>
    httpRequest.off(<span class="hljs-string">'headersReceive'</span>);
    <span class="hljs-comment">// 当该请求使用完毕时,调用destroy方法主动销毁</span>
    httpRequest.destroy();
  }
}
);

}

更多关于HarmonyOS 鸿蒙Next axios或者http怎么请求Formdata上传文件,地址是绝对路径,还有其他参数的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙系统中,使用axios或http库请求FormData上传文件并附带其他参数,可以通过以下方式实现。假设你使用的是JavaScript的axios库:

  1. 引入axios库:确保你的项目中已经引入了axios库。

  2. 创建FormData对象

    let formData = new FormData();
    formData.append('file', fileInput.files[0]); // 假设fileInput是一个文件输入元素
    formData.append('otherParam', 'value'); // 添加其他参数
    
  3. 发送请求

    axios.post('绝对路径地址', formData, {
        headers: {
            'Content-Type': 'multipart/form-data'
        }
    }).then(response => {
        console.log(response.data);
    }).catch(error => {
        console.error(error);
    });
    

注意,这里绝对路径地址需要替换为你的实际API地址。

  1. 处理响应:在.then中处理服务器返回的响应数据,在.catch中处理可能的错误。

这种方法利用了axios对FormData的原生支持,简化了文件上传和其他参数传递的过程。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部