Du måste välja kolumnen NAME
istället för FILENAME
. Den förra är den unika identifieraren (ser ut som series_of_numbers\the_filename
) och är vad filbläddringsobjektet kommer att innehålla, medan det senare är utan prefix.
Titta, du måste ge mer information från din sida. Jag har skapat en väldigt enkel sida för att prova detta (apex.oracle.com).
P2_FILE
är ett fil-bläddringsobjekt.
- Lagringstyp:Tabell APEX_APPLICATION_TEMP_FILES
- Rensa fil vid:slutet av sessionen
Jag har skapat en på-sändningsprocess som inte gör något mer än att lista några saker i felsökningsutdata.
declare
l_blob blob;
begin
for r in (select * from apex_application_temp_files)
loop
apex_debug.message('name: %s - filename: %s', r.name, r.filename);
end loop;
apex_debug.message('P2_FILE: %s', :P2_FILE);
SELECT blob_content
INTO l_blob
FROM apex_application_temp_files
WHERE name = :P2_FILE;
apex_debug.message('blob length: %s', dbms_lob.getlength(l_blob));
end;
Så jag kör sidan, aktiverar felsökning, väljer en fil och trycker på skicka. Alla fungerar. Kontrollera felsökningsloggen (acceptera):
name: 39044609744029199463/README (2).md - filename: README (2).md
name: 39044529927808550681/README (1).md - filename: README (1).md
name: 39044569042020557797/README.md - filename: README.md
P2_FILE: 39044609744029199463/README (2).md
blob length: 1884
Så:vad är annorlunda i din ände? Har du gjort som Jeffrey föreslagit och kört en felsökning av sidan? Vad är din "purge" inställd på? Är du säker på att no-data-found inträffar vid val av blob och inte i din procedur - har du kommenterat ditt procedursamtal ännu?