Ich habe eine einfache Dateieingabe in meiner App zum Speichern von Anhängen, die ein Benutzer hochlädt.Dateierweiterung bei einer gesteuerten Texteingabe beibehalten
<input id='uploadFile' type='file' name="files" />
<label htmlFor='uploadFile' onClick={this.onFileClick}>File</label>
Ich habe auch eine Texteingabe, wo sie den Dateinamen der hochgeladenen Datei ändern können.
<input id={props.id} type='text' value={props.value} onChange={(event) => props.onChangeHandler(event)} />
Die input
liest props.value
von seinem übergeordneten, die den Wert von Redux liest. Alles funktioniert super. Ein Benutzer kann jedoch die Dateierweiterung überschreiben, was dazu führt, dass die Datei ohne Erweiterung hochgeladen wird. Huch! Meine Frage ist, wie kann ich die Dateierweiterung in einer kontrollierten Texteingabe erhalten. Meine heutige Denken beinhaltet etwas wie folgt aus:
// check the MIME type of the upload
let mimeType = attachmentswindow.uploadedAttachment.type;
// check the text input for presence of a "."
// if it's not there, we better add the extension!
let updatedAttachmentFilename = event.target.value.includes(".") ?
event.target.value :
event.target.value + '.' + mimeType.substring(mimeType.lastIndexOf("/") + 1);
// store the new file name in redux
dispatch(updateUploadedAttachmentFilename({ updatedAttachmentFilename }));
diese Art von Arbeiten, aber wirklich, würde Ich mag es unmöglich machen für den Benutzer zu Fall die Dateierweiterung berühren. Gibt es eine Möglichkeit, dies mit einer kontrollierten Texteingabe in React zu tun? Vielen Dank im Voraus für jede Hilfe.
Nicht sicher, ob dies eine Möglichkeit ist, aber warum nicht nur den Dateinamen (ohne die Erweiterung) in der Eingabe anzeigen und die Erweiterung außerhalb der Ansicht behalten. Sie verwenden es nur, wenn Sie die Datei hochladen müssen. –