1

ファイルをアップロードしてフォルダーに保存するために正常に機能するファイルアップロードコードを作成しました。ユーザーが PDF ファイルの URL を読み込めるようにする機能が含まれており、URL からのファイルをアップロードして保存する必要があります。コード:

function loadURL(box) {
       var box = dhtmlx.modalbox({
           title: "Load URL",
           text: "<div id='form_in_box'><div>Enter the URL of PDF file <hr/><div><div><textarea id='file' style='width: 400px; height: 27px;'></textarea></div><span class='dhtmlx_button'><input type='submit' value='Load URL' style='width: 86px' onclick='save_file(this)'></span><span class='dhtmlx_button'><input type='button' value='Cancel' onclick='close_file(this)' style='width:80px;'></span></label></div></div>",
           width: "300px"
       })
   }

function save_file(box) {
       var file = document.getElementById('file');
       if (file.value == "") {
           alert("Choose a file to upload");
           return false;
       }
       dhtmlx.modalbox.hide(box);

       var fd = new FormData();
       fd.append('file', file.files[0]);
       var xhr = new XMLHttpRequest();
       xhr.open('POST', '/FileUpload/Upload', true);
       xhr.onreadystatechange = function () {
           if (xhr.readyState == 4 && xhr.status == 200) {
               alert('File successfully uploaded to the server');
           }
       };
       xhr.send(fd);

上記のコードを load_URL に使用すると、次のようなエラーが発生します: TypeError: file.files is undefined fd.append('file', file.files[0]);

4

2 に答える 2

1

Files API を使用しないでください (ファイル入力からローカル ファイルを読み取るために使用できます)。URL をサーバーに送信し、サーバー側のコードで取得するだけです。

于 2013-03-26T13:46:38.230 に答える
0

クラスを使用WebClientして、リモート URL からファイルをダウンロードします。メソッドを使用してDownloadFile、リモート URL からファイルをダウンロードできます。

public ActionResult DownloadFile(string fileName)
{
    if (!String.IsNullOrEmpty(fileName))
    {
        using (WebClient wc = new WebClient())
        {      
            string targetPath = @"C:\YourFolder\thatUniqueFileName.pdf";         
            wc.DownloadFile(fileName,targetPath);

            return RedirectToAction("Downloaded"); //PRG pattern
        }
    }
    return VieW();
}

プロジェクトのApp_Dataフォルダーにファイルを保存する場合は、targetPath 変数の値を次のように変更できます。

string targetPath = HttpContext.Server.MapPath("~/App_Data/yourPdf.pdf");

fileUrl を解析し、そこからファイル名を取得し、一意の識別子を追加して (同じ名前の別のファイルが上書きされないようにするため)、それを使用してファイルを保存できます。

于 2013-03-26T13:52:42.787 に答える