【发布时间】:2018-12-17 11:36:44
【问题描述】:
我会马上解释这个问题,但首先……这可以实现吗?
我在 Umbraco 中有一个 文档类型,我在其中存储来自表单的数据。我可以存储除文件之外的所有内容。
...
content.SetValue("notes", item.Notes);
content.SetValue("curriculum", item.Curriculum); /*this is the file*/
...
我正在添加这样的项目,其中 SetValue 来自以下命名空间 namespace Umbraco.Core.Models,这是函数签名 void SetValue(string propertyTypeAlias, object value)强>
并且返回错误如下
"字符串或二进制数据将被截断。 ↵声明已终止。”
我是不是误会了什么?我不应该发送base64吗?我正在将图像添加到媒体文件中,它会在其中创建一个带有序列号的子文件夹。如果我尝试添加现有文件夹,它会很好地附加文件,但如果我指向新的媒体子文件夹,它也会返回错误。关于我应该如何处理这个问题的任何想法?
提前致谢
编辑 1:Cryothic 回答后,我已使用以下内容更新了我的代码
byte[] tempByte = Convert.FromBase64String(item.Curriculum);
var mediaFile = _mediaService.CreateMedia(item.cvExtension, -1, Constants.Conventions.MediaTypes.File);
Stream fileStream = new MemoryStream(tempByte);
var fileName = Path.GetFileNameWithoutExtension(item.cvExtension);
mediaFile.SetValue("umbracoFile", fileName, fileStream);
_mediaService.Save(mediaFile);
错误发生在 mediaFile.SetValue(...)。
如果我从 umbraco 上传一个文件,它会转到“http://localhost:3295/media/1679/test.txt”,下一个文件会转到“http://localhost:3295/media/1680/test.txt”。我在哪里告诉我的请求它必须添加到 /media 文件夹并增加?我是不是只指向媒体文件夹,umbaco 处理增量部分?
如果我将 SetValue 更改为以下 mediaFile.SetValue("curriculum", fileName, fileStream); 请求成功,但文件未添加到内容本身,文件已添加到“http://localhost:3295/umbraco/media”而不是“http://localhost:3295/media”。
如果我尝试以下操作 - content.SetValue("curriculum", item.cvExtension); - 文件将添加到内容中,但路径为“http://localhost:3295/umbraco/test.txt”。
我不太了解 umbraco 如何将文件插入媒体文件夹(umbraco 外部)以及如何将媒体服务路径添加到内容服务。
【问题讨论】:
标签: c# file-upload umbraco