通过传递文件

时间:2016-11-09 07:11:34

标签: c# entity-framework web-services odata

我想通过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,将其转换回原始图像,然后保存在文件夹中。但我只能保存小尺寸文件。如果文件很大,我无法调用该服务,因此无法保存该文件。如何使用此服务以正确的格式正确保存任何类型的文件?通过此服务保存附件文件(所有大小的所有文件类型)的最佳和简单方法是什么?

1 个答案:

答案 0 :(得分:0)

我对WCF并不熟悉,但我知道它的默认邮件大小为64k。如果这是您的问题,WCF - How to Increase Message Size Quota的答案可能会对您有所帮助。