0

ユーザーを OAuth 経由でドロップボックスに接続する Web API を作成しました。API を使用してローカルで動作する Dropbox とやり取りしていますが、API を Azure サーバーにデプロイすると、ダウンロードできません。私のAPIは現在、私のマシンのパスにハードコーディングされているため、これが起こると予想していました. 私が使用しているメソッドは次のとおりです。 注:プロジェクトの MVC 部分の一部として、ActionResult を介してこのメ​​ソッドを呼び出します。

public FileSystemInfo DownloadFile(string root, string path)
        {
            var uri = new Uri(new Uri(DropboxRestApi.ApiContentServer),
                String.Format("files?root={0}&path={1}",
                root, UpperCaseUrlEncode(path)));

            var oauth = new OAuth();
            var requestUri = oauth.SignRequest(uri, _consumerKey, _consumerSecret, _accessToken);

            var request = (HttpWebRequest) WebRequest.Create(requestUri);
            request.Method = WebRequestMethods.Http.Get;
            var response = request.GetResponse();

            var metadata = response.Headers["x-dropbox-metadata"];
            var file = ParseJson<FileSystemInfo>(metadata);

            using (Stream responseStream = response.GetResponseStream())
            using (MemoryStream memoryStream = new MemoryStream())
            {
                byte[] buffer = new byte[1024];
                int bytesRead;
                do
                {
                    bytesRead = responseStream.Read(buffer, 0, buffer.Length);                    
                    memoryStream.Write(buffer, 0, bytesRead);
                } while (bytesRead > 0);

                file.Data = memoryStream.ToArray();
            }                                    
            return file;                                    
        }

これは、アクションの結果でメソッドを呼び出す場所です。

var file = api.DownloadFile("dropbox", "Public/downloadThis.jpg");
                    path = file.Path;
                    file.Save(@"....\Desktop\DemoTest\Downloads\downloadThis.jpg"); --- this is the problem & *Save* is a stream writer

ブラウザでサーバーからファイルをダウンロードする際に従うべき手順はありますか?

4

1 に答える 1

0

public ActionResult download(Models.downloadModel dowld, Models.LoggerView log) {

        string TC_ID = Request.QueryString["id"].ToString();
        string filename = TC_ID+"_LoggerData" + ".zip";
        Response.ContentType = "application/octet-stream";
        Response.AppendHeader("Content-Disposition", "attachment;filename=" + filename);
        Response.TransmitFile(Server.MapPath("~/files/" + filename));
        Response.End();

}

于 2013-05-10T06:02:50.463 に答える