HarmonyOS 鸿蒙Next axios或者http怎么请求Formdata上传文件,地址是绝对路径,还有其他参数
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><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 < 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) => {
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) => {
<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库:
-
引入axios库:确保你的项目中已经引入了axios库。
-
创建FormData对象:
let formData = new FormData(); formData.append('file', fileInput.files[0]); // 假设fileInput是一个文件输入元素 formData.append('otherParam', 'value'); // 添加其他参数
-
发送请求:
axios.post('绝对路径地址', formData, { headers: { 'Content-Type': 'multipart/form-data' } }).then(response => { console.log(response.data); }).catch(error => { console.error(error); });
注意,这里绝对路径地址
需要替换为你的实际API地址。
- 处理响应:在
.then
中处理服务器返回的响应数据,在.catch
中处理可能的错误。
这种方法利用了axios对FormData的原生支持,简化了文件上传和其他参数传递的过程。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html