0

ユーザーはファイルをアップロードし、医師によってレビューされます。次に、医師が自分の意見を記載したファイルをアップロードすると、ユーザーはそのファイルを読むことができます。少なくとも、できるはずです。医師がファイルをアップロードすると、ユーザーのフォルダー内に新しいディレクトリが作成され、アイテムがそのフォルダーにアップロードされます。

今バグ。詳細ページには、医師のメモを読むことができるようにダウンロードするファイル リンクがあることがわかります。しかし、ユーザーがリンクをクリックすると、リンクは 404 に戻ります。レビュー フォルダーからファイルを削除し、メイン ユーザー ディレクトリに配置すると、リンクが機能するようになりました。明らかに、リンクは正しい場所を指していませんが、私は .NET や C# を知らないので、これは非常に厄介であることが証明されています。

Details.cshtml ページの元のコードの一部を次に示します。

<table>
      <tr>
           <th colspan="4" class="display-label">Uploaded Documents</th>

      </tr>
           <tr>
                <th>FileName</th>
                <th>Download Files</th>
           </tr>
           @foreach (var file in ((IEnumerable<MyCombinedQueryModel>)ViewBag.Files))
           {<tr>
                 <td>
                      @Html.ActionLink("Download", "Download", new { id = Model.PatientsId, name = file.FileName })
                 </td>
                 <td>
                      @file.FileName
                 </td>
            </tr>

           }<tr>
            <th colspan="4" class="display-label">Download reviewer suggestion document</th></tr>
      <tr>
           <th>FileName</th>
           <th>Download Files</th>
      </tr>
           @if(Model.reviewed)
           {
                foreach (var file in ((IEnumerable<MyCombinedQueryModel>) ViewBag.Path))
                {
                     <tr>
                          <td>
                               @Html.ActionLink("Download", "Download", new {id = Model.PatientsId, name = file.FileName})
                          </td>
                          <td>
                               @file.FileName
                          </td>
                     </tr>
                }
           }

 </table>

DoctorsController.cs の一部

 //Download files string names
     public ActionResult Download(int? id, string name)
          {


               string fileName = name;


               var uploads = (from u in _db.Patients
                             where u.PatientsId == id
                             select u.FilesUrl).FirstOrDefault();


               if (uploads != null)
               {

                    string folder = Path.GetFullPath(uploads);
                    //HttpContext.Response.AddHeader("content-dispostion", "attachment; filename=" + fileName);
                    return File(new FileStream(folder +"/" + fileName, FileMode.Open), "content-dispostion", fileName);
               }

               throw new ArgumentException("Invalid file name of file not exist");
          }

データベースには、FilesUrl と PathUrl の 2 つのフィールドがあります。PathUrl は、Review フォルダー内の Reviewed ファイルの URL を保持します。私が正しければ、どちらも FileUrl にのみリンクする同じ関数 (ダウンロード) を呼び出していると思います。詳細ページでレビュー部分のactionLinkを「DownloadR」​​に変更し、Download関数をコピペ(DownloadRにリネームしてPathUrlを探すように変更)してみましたが、やはりうまくいきませんでした。

ここで問題になっていること、またはそれを修正する方法についてのアドバイスはありますか? お時間をいただきありがとうございます!

4

1 に答える 1

1

FilesUrl と PathUrl の問題のようです。患者がアップロードしたファイルと Dr がアップロードしたファイルが異なるディレクトリにある場合、このコントローラー メソッドは両方では機能しません。

Download メソッドに 3 番目の引数を追加して、ダウンロードするファイルが Dr または患者からのものかどうかを指定します。

public ActionResult Download(int? id, string name, bool reviewDirectory)
...
var uploads = (from u in _db.Patients
               where u.PatientsId == id
               select (reviewDirectory ? u.PathUrl : u.FilesUrl)).FirstOrDefault();
于 2012-10-18T19:40:04.923 に答える