我们在项目中使用Sitecore 6.5。
在项目的其中一个站点中,用户必须能够将pdf / doc文件上载到服务器。当他上传时,它会被添加到Web数据库中,因此我们必须将其传输到主数据库。
我试图通过使用Sitecore的web api项目来实现这一目标。
我已经看过this post如何做到这一点。但我无法让它发挥作用。
每当我执行请求时,都会收到内部服务器错误,告诉我找不到所请求文档的布局。
我生成的网址是:
{host}/-/item/v1/?name=45c87793-4b37-40c8-acbc-a3b8f2b0c275&sc_itemid=653a9a07-6ea0-4e9a-8214-6bf3447096ed&sc_database=master&payload=min
据我所知,我认为网址是正确的。
使用以下网址执行get请求确实有效:
{host}/-/item/v1/?sc_itemid=653a9a07-6ea0-4e9a-8214-6bf3447096ed
关于我失踪的想法?
编辑:
以下是我如何调用媒体海报的代码。
var mediaPoster = new MediaPoster("http://{host}/", @"sitecore\admin", "b");
if (pdfStream != null)
mediaPoster.PostMedia(item.Name, new Guid("{653A9A07-6EA0-4E9A-8214-6BF3447096ED}"), "master", new MemoryStream(pdfStream.ToArray()), ".pdf");
答案 0 :(得分:0)
还要验证您的配置是否正确。要上传文件,您需要设置安全性。
<site name="website">
<patch:attribute name="itemwebapi.mode">StandardSecurity</patch:attribute>
<patch:attribute name="itemwebapi.access">ReadWrite</patch:attribute>
<patch:attribute name="itemwebapi.allowanonymousaccess">false</patch:attribute>
</site>
我刚刚使用该配置进行了测试并且运行正常。
您可以创建一个控制台应用程序,PostMedia类使用此代码:
string HOST = @"http://HOST/";
string ParentID = "{3D6658D8-A0BF-4E75-B3E2-D050FABCF4E1}"; //Must be media library folder/item. this is the root
string mediaFileExt = ".pdf"; //you need to specify the extension. You can get that by the content-type returned or the way you find better.
HttpWebRequest httpWebRequest = (HttpWebRequest)HttpWebRequest.Create("http://sdn.sitecore.net/upload/sdn5/modules/sitecore%20item%20web%20api/sitecore_item_web_api_developer_guide_sc65-66-usletter.pdf");
HttpWebResponse httpWebReponse = (HttpWebResponse)httpWebRequest.GetResponse();
Stream mediaStream = httpWebReponse.GetResponseStream();
//create a instance and inform the credentials as well the host
MediaPost mp = new MediaPost(HOST, @"sitecore\admin", "b");
//post the media!
//Important: It needs a Valid Item Name,
// a Valid Parent ID under Media Library,
// the database, the stream and the extension
mp.PostMedia("DocumentName", new Guid(ParentID), "master", mediaStream, mediaFileExt);
它应该有效,让我们知道你是否还有这个错误......
<强>更新强>:
你知道Sitecore中的showconfig.aspx吗?您可以使用它来查看配置文件的解析方式。
我建议您去那里http://HOST/sitecore/admin/showconfig.aspx
,搜索<sites>
,看看您的网站是如何设置的。所有补丁属性(mode,access,allowanonumousaccess)应该与上面的配置类似。
只要您的用户是管理员,就应该可以访问medialibrary以及所有其他安全方面。
我刚才想到的另一点。您是否为Sitecore版本获得了正确版本的Item Web Api模块。
1.0
Sitecore Item Web API模块v1.0.0 rev.120828已发布 Sitecore Item Web API模块已使用Sitecore CMS 6.5.0进行了测试 rev.120706(Update-5)和CMS 6.6.0 rev.120918(初始版本)。
1.2
Sitecore Item Web API 1.2.0 rev。 140128被释放 Sitecore Item Web API模块已使用Sitecore CMS 6.6.0 rev进行了测试。 131211(6.6.0 Update-7)和7.1 rev。 140130(7.1更新-1)。