ppumpkin, ich denke nicht, dass ich mich gut erklären. Entschuldigung für das, was ich sicher bin, ist lamens Bedingungen, ich bin neu zu plupload und Handler alle zur gleichen Zeit.
Ich verwende eindeutige Namen als "falsch", weil ich den ursprünglichen Namen jeder Datei behalten muss. Ich benenne derzeit die Dateinamen beim Hochladen auf den Server korrekt, aber für meine SQL-Einfügung brauche ich dieselben Namen eingefügt. Wenn ich versuche, den von mir deklarierten FileName (context.Request ("name")) als Wert in meiner SQL-Anweisung zu verwenden, erhalte ich sofort einen Fehler und keinen eingefügten Wert. Wenn ich einen statischen Wert für den zu testenden Dateinamen verwende, fügt er nur gut ein, aber natürlich ist es derselbe Name für jede Datei, die ich hochlade.
Einschließlich Ihrer Updates, das, was ich derzeit für meine Handler und Clients Skript habe.
Handler:
Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
Dim chunk As Integer = If(context.Request("chunk") IsNot Nothing, Integer.Parse(context.Request("chunk")), 0)
Dim chunks As Integer = If(context.Request("chunks") IsNot Nothing, Integer.Parse(context.Request("chunks")) - 1, 0)
Dim fileName As String = If(context.Request("name") IsNot Nothing, context.Request("name"), String.Empty)
If (chunk = chunks) Then
Dim conn As SqlClient.SqlConnection = New SqlClient.SqlConnection(mdata.DBCONN)
Dim command As SqlClient.SqlCommand = New SqlClient.SqlCommand("W2_InsertPhoto 12345," & **fileName**, conn)
Dim rs As SqlClient.SqlDataReader
conn.Open()
rs = command.ExecuteReader()
rs.Close()
rs = Nothing
conn.Close()
conn = Nothing
End If
Dim fileUpload As HttpPostedFile = context.Request.Files(0)
Dim uploadPath = context.Server.MapPath("Upload")
Using fs = New FileStream(Path.Combine(uploadPath, fileName), If(chunk = 0, FileMode.Create, FileMode.Append))
Dim buffer = New Byte(fileUpload.InputStream.Length - 1) {}
fileUpload.InputStream.Read(buffer, 0, buffer.Length)
fs.Write(buffer, 0, buffer.Length)
End Using
End Sub
Mein Kunde Script:
<script type="text/javascript">
// Convert divs to queue widgets when the DOM is ready
$(function() {
$("#uploader").pluploadQueue({
// General settings,silverlight,browserplus,html5gears,
runtimes: 'flash',
url: 'FileUpload.ashx',
max_file_size: '10mb',
chunk_size: '1mb',
unique_names: false,
// Specify what files to browse for
filters: [{ title: "Image files", extensions: "jpg,jpeg,gif,png,bmp"}],
// Flash settings
flash_swf_url: 'assets/resources/plupload.flash.swf',
// Silverlight settings
silverlight_xap_url: 'assets/resources/plupload.silverlight.xap',
init: {
FileUploaded: function (up, file, info) {
}
}
});
// Client side form validation
$('form').submit(function (e) {
var uploader = $('#uploader').pluploadQueue();
// Validate number of uploaded files
if (uploader.total.uploaded == 0) {
// Files in queue upload them first
if (uploader.files.length > 0) {
// When all files are uploaded submit form
uploader.bind('UploadProgress', function() {
if (uploader.total.uploaded == uploader.files.length)
$('form').submit();
});
uploader.start();
} else
alert('You must at least upload one file.');
e.preventDefault();
}
});
//tweak to reset the interface for new file upload
$('#btnReset').click(function() {
var uploader = $('#uploader').pluploadQueue();
//clear files object
uploader.files.length = 0;
$('div.plupload_buttons').css('display', 'block');
$('span.plupload_upload_status').html('');
$('span.plupload_upload_status').css('display', 'none');
$('a.plupload_start').addClass('plupload_disabled');
//resetting the flash container css property
$('.flash').css({
position: 'absolute', top: '292px',
background: 'none repeat scroll 0% 0% transparent',
width: '77px',
height: '22px',
left: '16px'
});
//clear the upload list
$('#uploader_filelist li').each(function (idx, val) {
$(val).remove();
});
});
});
</script>
Danke für die Antwort ppumpkin. Ich kann Ihren Code verwenden und erfolgreich einen einzigen Datensatz pro Datei einfügen (anstelle von mehrfachen Einfügungen wie zuvor) "so das ist gut" ... ABER ich kann immer noch keinen eindeutigen Namen für jede der Dateien mit dem "FileName" -Wert einfügen. Ich denke, ich bin verwirrt, wie ich den eindeutigen Dateinamen für jede Datei erhalten soll, die ich hochlade, wenn ich die Einfügung mache "nach" der letzten Datei (wenn Chunks -1) hochgeladen wird. – Jason
@Jason Ich habe noch einige Beispiele hinzugefügt. Ich benutze auch jQuery '$', um einige Daten in multipart zu bekommen. Verwenden Sie fiddler, um die gesendeten Daten abzufangen und Ihren Handler zu debuggen, schauen Sie in 'context.current.request.forms' nach den Parametern. Bitte beachten Sie auch, dass Sie meine Antwort aufheben oder akzeptieren. Danke – ppumkin
Punkt auf den SQL-Code genommen, es war schnell und schmutzig nur für diesen Beitrag getan. Die iamges, mit denen ich teste, haben keine Sonderzeichen oder Leerzeichen. Haben Sie weitere Vorschläge für das Thema, das ich habe? Sorry für das Posten neuer Frage, ich konnte nicht herausfinden, wie meine Frage zu bearbeiten und neue "Code" – Jason