In browser developer tools, I checked xhr tab in networking, the request sent as supposed.
while debugging: upload mehtod is invoked but uploadedFile
is null
project has working files uploading via p:fileUpload
, so I think filters troubles are passed.
here are:
bean:
import javax.servlet.http.Part;
import com.d2m.view.bean.LetterWFBean;
@Named
@RequestScoped
public class AudioFileUpload {
private Part uploadedFile ;//+setter/getter
@Inject
private LetterBean letterBean;
public void upload() throws IOException{
byte[] blob = uploadedFile.getInputStream().readAllBytes();
letterBean.setAudioNote(blob);
}
...
}
facelet:
<h:form id="hiddenAudioUploadForm" enctype="multipart/form-data" styleClass="ui-helper-hidden">
<h:inputFile id="audioFile" value="#{audioFileUpload.uploadedFile}" />
<p:remoteCommand name="hiddenAudioUploadCommand" action="#{audioFileUpload.upload}" process="@form" update="@none" />
</h:form>
...
<p:button id="uploadAudio_CL" onclick="uploadAudioFile();return false;" icon="fa fa-check" />
JS:
function addAudioFileToUploadFiles(){
const dataTransfer = new DataTransfer();
dataTransfer.items.add(new File([ base64AudioBlob ], "a.ogg", { type: "audio/webm" }));
document.getElementById("hiddenAudioUploadForm:audioFile").files = dataTransfer.files;
}
async function uploadAudioFile(){
addAudioFileToUploadFiles();
hiddenAudioUploadCommand();
}
Thanks-at least for reading!