1

ASP.NET で何かをするのはこれが初めてなので、経験豊富な ASP.NET 開発者にとっては信じられないほどばかげたことをしているのかもしれません。

状況は次のとおりです。ファイル拡張子のない GUID という名前のファイルがたくさんあります。これらを Web ブラウザーでレンダリングしたい場合があります。.pdfファイル拡張子を使用してファイルの名前を手動で変更すると、これはすべて正常に機能します。ASP.NET でスクリプトを作成して、要求されたときにファイルをコピーして拡張子を追加しようとしています。これが私のコードです:

<script runat="server">
dim guid = HttpContext.Current.Request.QueryString("file")

dim path =  HttpContext.Current.Request.PhysicalApplicationPath
dim origin = path + guid
dim destination = origin + ".pdf"

System.IO.File.Copy(origin, destination)
</script>
<html>
<head>
<script src="jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
    var htmldata = "<embed src='http://myurl.com/<%=guid%>.pdf' style='width:100%; height:100%;'>";
    document.getElementById('pdf').innerHTML = htmldata;
});
</script>
</head>
<body>
<span id="pdf"></span>
</body>
</html>

これにより、次のエラーがスローされます。

Description: An error occurred during the compilation of a resource required to 
service this request. Please review the following specific error details and 
modify your source code appropriately. 

Compiler Error Message: BC30188: Declaration expected.

Source Error:
Line 6:  dim destination = origin + ".pdf"
Line 7:  
Line 8:  System.IO.File.Copy(origin, destination)
Line 9:  </script>
Line 10: <html>
C:\path\to\web\root\default.aspx(8) Line: 8 

Show Detailed Compiler Output:
c:\windows\system32\inetsrv> REALLY LONG LINE THAT I'LL INCLUDE IF NEEDED
Microsoft (R) Visual Basic Compiler version 10.0.30319.233
Copyright (c) Microsoft Corporation.  All rights reserved.
C:\path\to\web\root\default.aspx(8) : error BC30188: Declaration expected.
System.IO.File.Copy(origin, destination)
~~~~~~   
4

1 に答える 1

0

コードは正しいと思いますが、これはどの関数にもありません。Page_Loadイベント内でこれが必要だと思います:

<script runat="server">
    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim guid = HttpContext.Current.Request.QueryString("file")

        Dim path = HttpContext.Current.Request.PhysicalApplicationPath
        Dim origin = path + guid
        Dim destination = origin + ".pdf"

        System.IO.File.Copy(origin, destination)
    End Sub
</script>

編集:変数にアクセスする場合はfilename、Page_Load の外に出て、次のようなパブリック変数にする必要があります。

Public filename As String = HttpContext.Current.Request.QueryString("file")
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ...
于 2013-07-29T16:51:11.050 に答える