reactjs - Hvordan sender man zip-fil data til REST API ved hjælp af typescript?
Jeg vil uploade en zip fra GUI og gemme den zip-fil, som den er, i /temp-mappen. I min applikation er frontend-koden skrevet i typescript og backend-koden skrevet i golang.
Når jeg uploader en zip fra frontend, ser zip-filens data således ud i browserkonsollen:
data:application/x-zip-compressed;base64,UEsDBBQAAAAAAHdPvlQAAAAAAAAAAAAAAAAYAAAAa2lhbGlfYmFja3VwXzI4XzA1XzIwMjIvUEsDBBQAAAAAAFxPvlQAAAAAAAAAAAAAAAAeAAAAa2lhbGlfYmFja3VwXzI4XzA1XzIwMjIvZ3JhcGgvUEsDBBQAAAAAAFFPvlQAAAAAAAAAAAAAAAAiAAAAa2lhbGlfYmFja3VwXzI4XzA1XzIwMjIvZ3JhcGgvYXBpL1BLAwQUAAAA......
Når jeg prøver at hente forespørgslen på backend, er den altid null.
Er der nogen måde at sende ovenstående data til backend'en ved hjælp af TypeScript?
Nedenfor er min frontend-kode
handleFileInputChange = (_event, file) => {
this.setState({
filename: file.name });
console.log(this.state.filename);
}
handleTextOrDataChange = value => {
this.setState({
fileData: value });
}
handleClear = _event => this.setState({ filename: '', value: '' });
handleFileReadStarted = _fileHandle => this.setState({ isLoading: true });
handleFileReadFinished = _fileHandle => this.setState({ isLoading: false });
saveFileData = (filename: string, filedata: any) => {
console.log("Filename:",filename);
console.log("Filedata:",filedata);
var str = filedata;
var splitted1: any
var splitted = str.split(",");
for (let i=0;i<splitted.length;i++){
splitted1 = splitted[1]
}
console.log(splitted1)
API.sendFileNameAndFileData(filename,splitted1).then(response => {
this.setState({
fileSavestatusText: response.data,
});
});
};
render(){
return (
<FileUpload
id="archive-file"
type="dataURL"
value={value}
filename={filename}
filenamePlaceholder="Drag and drop a file or upload one"
onFileInputChange={this.handleFileInputChange}
onDataChange={this.handleTextOrDataChange}
onTextChange={this.handleTextOrDataChange}
onReadStarted={this.handleFileReadStarted}
onReadFinished={this.handleFileReadFinished}
onClearClick={this.handleClear}
hideDefaultPreview
browseButtonText="Upload"
height='425px'
width='810px'
>
{filename && (
<div className="pf-u-m-md">
<FileUploadIcon size="md" /> Custom preview here for your file named {filename}
</div>
)}
</FileUpload>
<Button className= { buttonstyle } variant="primary" onClick={() =>
this.saveFileData(this.state.filename, this.state.fileData)}> Save
</Button>
);
}
Svar #1
Jeg håndterer svar i backend ved at bruge følgende ioutil-funktion
body, err := ioutil.ReadAll(r.Body)
s := string(body)
fmt.Println(s)
dec, err := base64.StdEncoding.DecodeString(s)
if err != nil {
panic(err)
}
og udføre operationer på kropsvariablerne og bruge det som ovenstående kode.
