FormData를 사용하여 오디오 파일을 서버에 업로드할 수 있습니까?

4348 단어 react-native-audio

묘사

2016-11-02 21:29 나는 답이 있다. 네, 할 수 있어요.
나는 이런 방식으로 그림을 업로드하는 데 성공했지만, 오디오를 업로드하는 데 실패했다. 서버는 이미 오디오 파일을 받았지만, 크기는 0이다. 나는 모른다. 도와주십시오.

I used react-native-fileupload upload audio file success, but react-native-fileupload can not run on Android, and it seems that no one to maintain.

I noticed this: https://github.com/jsierles/react-native-audio/issues/97 @RakanNimer said: If you want to upload and download voice files then using react-native-fs would be a great idea.


여보세요
고쳤어요?

토론 #1

@Sumrocks 네, 쓰세요.Android에서

토론 #2

를 추가해야 합니다.const path = 'file://' + AudioUtils.DocumentDirectoryPath + 'test.aac' 너무 많아!!!file://안녕하세요, 질문 감사합니다.
대답 고마워요.그러나 내가 도착한 단점은 설정이 필요하다

토론 #셋

.만약 내가 이렇게 한다면react native는 나에게 이 오류

토론 #4

를 줄 것이다.내용 유형을 설정할 방법이 있습니까?

나는 'Content-Type': 'audio/acc' 시도했지만, 나의 종점에서 오류가 돌아왔다.
이것은 내 코드입니다.
  uploadAudio = async () => {
    const path = `file://${AudioUtils.DocumentDirectoryPath}/test.aac`
    const formData = new FormData()
    formData.append('file', {
      uri: path,
      name: 'test.aac',
      type: 'audio/aac',
    })
    try {
      const res = await fetch(API_UPLOAD_MSG_FILE, {
        method: 'POST',
        headers: {
          'Content-Type': 'multipart/form-data',
        },
        body: formData,
      })
      const json = await res.json()
    } catch (err) {
      alert(err)
    }
  }
multipart != audio/acc+1'Content-Type':'multipart/form-data'원하실 거예요

토론 #5

,
파일 유형이나 메타 유형이

토론 #6

에서 추출되었습니다.
크롬 디버거가 열려 있지 않도록 생산 모드에 있는지 확인하겠습니다. (요청이 종료됩니다.)당신의 ${file path}를 기록해서 파일을 배로 만들지 않았는지 확인하십시오:/'Content-Type': 'multipart/form-data' @gregbenner. 당신의 평론에 감사드립니다. 예를 들어 주시겠습니까?어디에 두어야 할지 몰라type:audio/${ext}.

토론 #7

이거 제가 쓰는 거예요.https://github.com/expo/expo/issues/214#issuecomment-316950941
서버 if 노드에서 type:audio/${ext}

토론 #8

를 사용해야 하는데 @Noitidart에 도움이 됩니까?multer_upload=async()=>{
우리 같이 하자.http://103.234.184.240/api_for_solutions/upload_recording';
    const data = new FormData();
    const ext = 'acc';
    data.append('file', {
        uri:`file://${file_path}`,
        name:`recording.${ext}`,
        type:`audio/${ext}`
    }, `recording.${ext}`);

    const response = await fetch('https://stream.watsonplatform.net/speech-to-text/api/v1/recognize?continuous=true', {
        method: 'POST',
        headers: {
            'Content-Type': `audio/${ext}`,
            // 'Content-Type': 'multipart/form-data',
            'X-Watson-Authorization-Token': token
        },
        body: data
    });

    console.log('watson-stt::getResults - response:', response);

    if (response.status !== 200) {
        const error = await response.text();
        throw new Error(`Got bad response "status" (${response.status}) from Watson Speach to Text server, error: "${error}"`);
    }

}
출력: - 네트워크 요청 실패
제 잘못을 해결해 주세요. 저는 신출내기입니다.
미리 감사

토론 #9

@Biplovkumar copy 붙여넣기https://github.com/expo/expo/issues/214#issuecomment-316950941

토론 #10

@gregbenner 저도 당신의 코드를 복사했지만 같은 네트워크 요청 오류를 받았습니다.그것은 물건을 찾는 것과 관계가 있습니까?제 말은 제3자 플러그인을 사용해야 한다는 것입니다. 예를 들어axios입니까?fetchblob입니까?

토론 #11

헤이@ShooterArk@Biplovkumar 해결책을 찾았습니까?

토론 #12

@SumRocks Yes, use const path = 'file://' + AudioUtils.DocumentDirectoryPath + 'test.aac'. On Android, you must add file://.


효과가 없다
도와 드릴까요?

좋은 웹페이지 즐겨찾기