我想通过REST odata服务保存附件文件。我在服务中使用了实体框架。我将文件的base 64传递给rest客户端,如下所示:
服务电话网址:
http://localhost:20347/NewServices.svc/Attc(DocEntry=831,Image='',Password='',PType='',UserID='')
XML:
<?xml version="1.0" encoding="utf-8"?><entry xml:base="http://localhost:20347/NewServices.svc/" xmlns="http://www.w3.org/2005/Atom" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"><id>http://localhost:20347/NewServices.svc/Attc(DocEntry=831,Image='',Password='',PType='',UserID='')</id><category term="Web_Services_Model.Attc" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" /><link rel="edit" title="Attc" href="Attc(DocEntry=831,Image='',Password='',PType='',UserID='')" /><title /><updated>2016-11-08T10:58:41Z</updated><author><name /></author><content type="application/xml"><m:properties><d:DocEntrym:type="Edm.Int32">831</d:DocEntry><d:DocNumm:type="Edm.Int32">830</d:DocNum><d:U_ID>PID1058</d:U_PID><d:UID>1</d:UID><d:Act>138</d:Act><d:PType></d:PType><d:Image>BASE 64</d:Image><d:UserID>admin</d:UserID><d:Password></d:Password></m:properties</content></entry>
用于保存图像文件的代码。
[ChangeInterceptor("OPDAttc")]
public void SaveAttc(OPDAttc Atch, UpdateOperations operations)
{
#region Add
if (operations == UpdateOperations.Add)
{using (Image image = Image.FromStream(new MemoryStream(Convert.FromBase64String(ImgtoSave))))
{
image.Save(FileName + imageid + "_" + time_now + "_IMG.jpg", ImageFormat.Jpeg);
FileName = FileName + imageid + "_" + time_now + "_IMG.jpg";
}}
WebOperationContext.Current.OutgoingResponse.StatusCode = System.Net.HttpStatusCode.BadRequest;
WebOperationContext.Current.OutgoingResponse.StatusDescription = Result;
#endregion
}
我解码base 64,将其转换回原始图像,然后保存在文件夹中。但我只能保存小尺寸文件。如果文件很大,我无法调用该服务,因此无法保存该文件。如何使用此服务以正确的格式正确保存任何类型的文件?通过此服务保存附件文件(所有大小的所有文件类型)的最佳和简单方法是什么?
答案 0 :(得分:0)
我对WCF并不熟悉,但我知道它的默认邮件大小为64k。如果这是您的问题,WCF - How to Increase Message Size Quota的答案可能会对您有所帮助。