У меня есть простая асинхронная загрузка asp.net, где я пытаюсь загрузить образец изображения из моей локальной системы и при загрузке пытаюсь выполнить простой веб-метод.
Сценарий:
Загрузка изображения с помощью асинхронного загрузчика и его исправная работа и загрузка в папку назначения.
Теперь при попытке сохранить fileupload.filename в скрытом поле и проверить, действительно ли он получает имя файла (это также работает)
Теперь при попытке отправить переменную, в которой сохраняется значение скрытого поля, возникает проблема. Здесь он отображается как неопределенный.
Вот мой код:
Protected Sub fileUploadComplete(ByVal sender As Object, ByVal e As AsyncFileUploadEventArgs)
Thread.Sleep(1000)
Dim filename As String = System.IO.Path.GetFileName(fileUpload1.FileName)
fileUpload1.SaveAs(Server.MapPath("UploadFiles/") & RandomFolder.Value & "/" & filename)
lblFilename.Value = filename
End Sub
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
If Not IsPostBack Then
CreateFolder()
End If
Dim mypath As String = Server.MapPath("~/UploadFiles/")
myFilePath.Value = mypath
End Sub
<WebMethod()> _
Открытая функция FileDetails (ByVal Filename As String, ByVal mypath As String) As String // Некоторые операции возвращают "True" End Function
HTML:
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<link href="style/bootstrap.css" rel="stylesheet" />
<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
<script type="text/javascript">
// This function will execute after file uploaded successfully
function uploadComplete() {
document.getElementById('<%=lblMsg.ClientID %>').innerHTML = "File Uploaded Successfully";
}
// This function will execute if file upload fails
function uploadError() {
document.getElementById('<%=lblMsg.ClientID %>').innerHTML = "File upload Failed.";
}
$(document).ready(function () {
$("#btnconvert").click(function () {
var FileFolder = $('#RandomFolder').val();
var filename = document.getElementById('<%=lblFilename.ClientID %>').val();
alert(FileFolder);
alert(filename);
$.ajax({
type: "POST",
url: "AsyncUpload.aspx/FileDetails",
data: JSON.stringify('{"Filename":"' + filename + '","mypath":"' + FileFolder + '"}'),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
// Replace the div's content with the page method's return.
alert("Success");
}
});
});
});
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ToolkitScriptManager ID="scriptManager1" runat="server"/>
<div>
<asp:AsyncFileUpload ID="fileUpload1" OnClientUploadComplete="uploadComplete" OnClientUploadError="uploadError"
CompleteBackColor="White" Width="350px" runat="server" UploaderStyle="Modern" UploadingBackColor="#CCFFFF"
ThrobberID="imgLoad" OnUploadedComplete="fileUploadComplete" /><br />
<asp:Image ID="imgLoad" runat="server" ImageUrl="loading.gif" />
<br />
<asp:Label ID="lblMsg" runat="server" Text=""></asp:Label>
</div>
<asp:HiddenField ID="RandomFolder" runat="server"/>
<asp:HiddenField ID="FilePath" runat="server"/>
<asp:HiddenField ID="myFilePath" runat="server"/>
<asp:HiddenField ID="lblFilename" runat="server"/>
<button id="btndetails" class="btn btn-danger btnconvert" type="button">Convert file</button>
</div>