Mon problème est quand je crée ce contrôleur: Lorsque j'essaie cette demande sur Swagger, cela me permet de télécharger un fichier. Lorsque je télécharge le fichier, le contenu est le suivant: p> système.byte [] p>
blockQuote> mais quand je teste cela sur Swagger: p> Le résultat de B est: P> dgvzda == p>
blockQquote> Je ne veux pas voir
test code> ou
system.byte [] code> à l'intérieur du fichier créé Je veux voir le résultat de B sur la création de fichier. p> p>
3 Réponses :
Vérifiez la réponse suivante. Vous devriez avoir une solution de bonne solution: Renvoyer le CSV du contrôleur de base .NET P>
TL; DR: Utilisez la fileresult au lieu d'iacctionResult ou définissez l'en-tête de disposition de contenu. P>
Un autre très bon article: Comment retourner des fichiers de API Web p>
Explication sur: Systeme.Byte [] P>
Je suppose que depuis que vous avez défini le type de contenu sur "Texte / Plain", il y a une conversion .Tostring () quelque part. Regardez le premier Conneto à cette question. "" System.byte [] "est retourné au lieu de les données réelles p>
Array ne remplace pas cette méthode, donc pour les tableaux, il renvoie le nom de type - c'est la mise en œuvre par défaut. P> blockQuote>
J'essaie mais rien ne fonctionne pour moi: /
@ user10863293 Cochez ma réponse -> Stackoverflow.com/a/55847016/2487565 .
Je ne suis pas sûr, que voulez-vous dire avec le résultat "dgvzda =="
mais cette simple fonctionne: p> Je reçois un fichier avec " Testez "à l'intérieur. p> mais vous devriez mieux utiliser p> et, de cource, vous pouvez utiliser UTF8 au lieu d'ASCII P> byte[] b = Encoding.UTF8.GetBytes(word);
Bien sûr, vous pouvez utiliser UTF 8 au lieu d'ASCII
Oui mais je ne veux pas avoir de fichier avec test à l'intérieur. Lorsque je fais une console.writine d'encoding.ascii.getbytes (Word), j'ai ce résultat sur mon API DGVZDA == Je souhaite également avoir le même résultat dans mon fichier quand il sera créé.
@ user10863293. Que voulez-vous avoir au lieu de "test"? Si vous souhaitez avoir du texte du paramètre Word i>, supprimez le mot ligne = "Test";
@ user10863293: alors vous devez clarifier ce que vous faire i> veux. C'est vraiment, vraiment pas clair ce que vous voulez, comment vous téléchargez le fichier, etc.
OK, je vous ai.
C'est ce que vous voulez: p>
C'est juste moi ou cela n'a rien à voir avec " i i> veux i> à i> avoir i> bylary i > Data i> dans i> Le fichier i> = i> "Pourtant, il est utile de OP? Les coments OP dans la question étaient mal écussés
@ Bradbury9 Yep, tu as raison. Mais cela n'a plus d'importance. Il est déjà effacé.
Pourriez-vous clarifier exactement ce que vous attendez de voir dans le dossier? Ce n'est pas clair ce que vous essayez d'atteindre, ou pourquoi vous convertissez entre binaires et texte.
Devrait vérifier que "texte / plaine"
Qu'est-ce que exactement i> voulez-vous dire par "Données binaires"? Tout ce qui passe sur le fil est binaire à la fin. Quels octets exacts vous attendez-vous à être dans ce
Morthstream code>? 4 octets, un pour chaque personnage? Ou une représentation textuelle (par exemple en heex)?
@Jonskeet je mettez à jour mon billet.
Votre édition n'a pas de sens pour moi - car la valeur du mot
mot code> est
"test" code>. Ce que vous avez prétendu être le résultat est la version codée de base64 des octets codés par ASCII de "test". Où voyez-vous ce résultat? Veuillez éditer votre question pour en faire beaucoup plus clairement - pendant que ce n'est pas clair, nous ne pourrons pas pouvoir vous aider.
@ Bradbury9 Si je supprimais "Texte / Uni" J'ai cette erreur: "L'en-tête contient des valeurs non valides à l'index 0: 'License.dat'"
@ user10863293, si vous souhaitez avoir des données binaires, vous devez spécifier le bon contenu de type de contenu. Dans votre exemple, il y a "text / plain".
@Jonskeet i Modifier.
Lorsque vous faites
txtbuilder.append (b); code> la base
objet.tostring () code> de
octet [] code> est ajouté. Vous ne pouvez pas ajouter d'octets à la chaîne à moins que vous ne les reconquise d'une manière ou d'une autre.
Ce n'est toujours pas clair où vous voyez ce résultat. Quelque chose i> convoque cette information en base64, et il n'est pas clair si vous Vous voulez i> base64 données ou non. Si vos données ne sont que du texte pour commencer, pourquoi n'utilisez-vous pas simplement
fichier (coding.utf8.getbytes (mot), "texte / plaine", "licence.dat") code>?
@Jonskeet parce que quand je fais que je ne peux pas télécharger mon fichier. Et si je fais ce fichier (encoding.utf8.getbytes (Word), "application / octère-flux", "licence.dat"), mon fichier est vide.
Il a l'air écrit beaucoup complexe que possible.
@ user10863293: Cela suggère la façon dont vous téléchargez le fichier du fichier peut être cassé, mais nous ne pouvons pas voir que ...
Bien que j'ai la solution, je n'ai toujours aucune idée, comment il pourrait obtenir une chaîne de base64 convertie de la matrice d'octet. Je ne reçois toujours que la chaîne "System.Byte []" Retourne.